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

Yur*_*sov 4 tcp node.js

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

rdr*_*rey 5

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

如果你发出许多请求,猴子修补(包装)http.request,https.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)
Run Code Online (Sandbox Code Playgroud)

如果你想补丁超过那些请求,在tcp/udp级别,你不幸的是必须阅读源来找出你可以修补的底层方法,我还没有去过那里.

我喜欢阅读nodetime的源代码,这些require函数可以修补函数,以便对代码中更深层次的特定函数/模块的任何使用进行分析.去读那个来源吧!:)