使用node.js http-proxy测量stream量

我使用http和node-http-proxy模块编写了一个用于托pipe我的应用程序的小型反向代理。 例如:

我有:

  • 代理端口80上运行

  • 在端口3000上运行website1.com

  • website2.com在端口3001上运行

  • 网站3在端口3002上运行

如果我访问website1.com域,代理服务器将使用node-http-proxy服务端口3000上运行的服务器的内容。

但是现在我需要测量每个域的带宽(传入/传出,或者至less传出)

我试图侦听请求对象上的“数据”事件,但在文档中,他们表示可读事件不会在IncomignMessage上出于某种原因。

我也为“基础”function写了一个小模块,可以在这里find:

https://npmjs.org/package/reproxy

example / example.js

那么,如何使用当前的设置来完成这个测量呢?

我find的解决scheme是在RoutingProxy对象上设置和“结束”事件,并在事件callback中获取套接字信息。

var proxy = new require('http-proxy').RoutingProxy(); proxy.on('end', function(req, res, response) { var host = req.headers.host; var bytesIn = response.socket._bytesDispatched; var bytesOut = response.socket.bytesRead; console.log('request to ' + host); console.log('request: ' + bytesIn + ' bytes.'); console.log('response: ' + bytesOut + ' bytes.'); }); 

请注意,这不是最佳解决scheme,因为请求大小包括由反向代理添加的头,例如“x-”头。