使用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-”头。