2012-07-28 69 views
3

我正在为节点中编写的应用程序构建一个小型开发人员工具(HUD)。在这个工具中,我想要显示为了提供该页面而做出的所有HTTP/HTTPS请求(将它们显示给开发者并记录它们的编号)。有没有一个干净的方式来做到这一点,这不涉及包装http.request()?如果不是,那么为了记录HTTP & HTTPS,需要打包的最低级别的方法是什么?对于TCP连接怎么样?如何在Node.js中监视传出的HTTP请求?

回答

4

答案取决于代码的复杂程度。如果您对每个请求提出3或4次外部资源请求,只需手动插入分析代码即可,这可能是最简单最简单的解决方案。

如果你发出很多很多请求,猴子补丁(包装)http.requesthttps.request可以很容易地完成。

patcher = (patchMe) -> 
    original = patchMe.request 
    patchMe.request = (options, callback) -> 
    console.log options.host, options.method # or any other counting, profiling 
    original(options, callback) 

http = require 'http' 
https = require 'https' 

patcher(http) 
patcher(https) 

如果要修补以上这些要求,在TCP/UDP级别,你会很遗憾不得不去读取源弄清楚你可以修补其基本方法,我还没有去那里。

我喜欢阅读nodetime的源代码,该代码将require函数用于分析代码中更深层次特定函数/模块的任何用法。去看看这个源代码! :)