javascript - 使用 node.js http-proxy 测量流量

标签 javascript node.js bandwidth http-proxy node-http-proxy

我编写了一个小型反向代理,用于使用 http 和 node-http-proxy 模块在同一台计算机上托管我的应用程序。例如:

我有:

  • proxy 在端口 80 上运行

  • website1.com 运行在端口 3000

  • website2.com 运行在端口 3001

  • website3.com 在端口 3002 上运行

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

但现在我需要测量每个域(传入/传出,或至少传出)使用的带宽

我试过在请求对象上监听“数据”事件,但在文档中他们说出于某种原因,IncomignMessage 上未发出可读事件。

我也为“基本”功能写了一个小模块,可以在这里找到:

https://npmjs.org/package/reproxy

参见example/example.js

那么,我如何才能使用当前设置完成此测量?

最佳答案

我找到的解决方案是在 RoutingProxy 对象上设置和“结束”事件,并在事件回调中获取套接字信息。

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.');

});

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

关于javascript - 使用 node.js http-proxy 测量流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275700/

相关文章:

javascript - 按 ID 对 HTML 表中的数据进行排序 jQuery/javaScript

javascript - 这是 Chrome 中的安全问题吗?

node.js - 从 Nodejs 使用 MusicKit JS

cuda - GPU内存带宽理论与实际

c++ - 在不传输数据的情况下确定网络接口(interface)带宽/类型

Javascript 对 URL 进行 Post 或 Get 调用并返回页面上的文本

javascript - 如何停止使用 canvas imageData 进行 alpha 预乘?

node.js - GraphicsMagick:toBuffer() 流产生空缓冲区

node.js - 使用 node.js 作为游戏服务器来跟踪游戏状态

linux - 以 Mbps 为单位的带宽计算