如何监控Node.js中的传出HTTP请求?

时间:2012-07-28 06:24:08

标签: node.js tcp

我正在为节点编写的应用构建一个小型开发人员工具(HUD)。在该工具中,我想要显示为了提供该页面而生成的所有HTTP / HTTPS请求(将它们显示给开发人员并记录他们的编号)。有没有一种干净的方法,这不涉及包装像http.request()这样的东西?如果没有,那么为了记录HTTP和&而需要包装的最低级别方法是什么? HTTPS? TCP连接怎么样?

1 个答案:

答案 0 :(得分:5)

答案取决于代码的复杂程度。如果您对每个请求发出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函数,以便对代码中更深层次的特定函数/模块的任何使用进行分析。去读那个来源! :)