Node.js 我可以检测node Socket.IO客户端使用的带宽吗?

Node.js 我可以检测node Socket.IO客户端使用的带宽吗?,node.js,socket.io,Node.js,Socket.io,我有人声称我的网站使用了大量的bandwith,他们的互联网供应商正在限制它们或类似的东西 关于如何获得客户端每秒接收和发送的数据量,有什么想法吗?我想在某个可以监控的地方(在客户机的屏幕上)显示小的使用情况统计数据 谢谢看来这是可能的,我发现了这个。我测试了它,它似乎工作 虽然它不是特定于socket.io的,但我找不到任何关于它的东西(哦,我找到了)。但看起来您可以将其实现到服务器上的emit函数中,以计算发送的字节数。祝你好运 const net = require("net"); va

我有人声称我的网站使用了大量的bandwith,他们的互联网供应商正在限制它们或类似的东西

关于如何获得客户端每秒接收和发送的数据量,有什么想法吗?我想在某个可以监控的地方(在客户机的屏幕上)显示小的使用情况统计数据


谢谢

看来这是可能的,我发现了这个。我测试了它,它似乎工作

虽然它不是特定于socket.io的,但我找不到任何关于它的东西(哦,我找到了)。但看起来您可以将其实现到服务器上的emit函数中,以计算发送的字节数。祝你好运

const net = require("net");

var server = net.createServer(function (c) {
    var oldWrite = c.write;
    c.write = function(d) {
            if (!Buffer.isBuffer(d)) {
                    d = new Buffer(d);
            }
            oldWrite.call(this, d);
            server.bytesSent += d.length;
    };

    c.on('data', function(d){
            server.bytesReceived += d.length;
    });

    c.write('Hello world!\r\n');
    c.pipe(c);
    c.end();
});

server.bytesReceived = 0;
server.bytesSent = 0;

server.listen(3000);

var units = ["B", "kB", "MB", "TB"];
function simplifiedUnits(input) {
    var unit = units[0];
    var i = 0;
    while (input > 1024 && ++i) {
            unit = units[i];
            input /= 1024;
    }
    return Math.round(input) + " " + unit;
}

var time = process.hrtime();
setInterval(function (){
    process.stdout.write('\u001B[2J\u001B[0;0f');
    var diff = process.hrtime(time)[0] + process.hrtime(time)[1]/1000000000;
    var bpsSent = Math.round(server.bytesSent/diff) || 0;
    var bpsReceived = Math.round(server.bytesReceived/diff) || 0;
    console.log("Running node.js %s on %s-%s", process.version, process.platform, process.arch);
    console.log("Memory usage: %s", simplifiedUnits(process.memoryUsage().rss));
    console.log("Uptime: %ds", Math.round(process.uptime()));
    console.log("Open connections: %d", server.connections);
    console.log("In: %s (%s/s)", simplifiedUnits(server.bytesReceived), simplifiedUnits(bpsReceived));
    console.log("Out: %s (%s/s)", simplifiedUnits(server.bytesSent), simplifiedUnits(bpsSent));
}, 100);

谢谢是的,我在寻找Socket.IO特有的东西-想想Socket.IO存储接收/发送的字节,这样我就可以适应它了?如前所述,我没有找到任何特定于Socket.io的信息,但这可能是肯定的。@Justin用我找到的特定于Socket.io的基准测试工具更新了答案。我遇到过类似的投诉,在一些地方坐下来后,他们正在使用我的产品,其中一个路由器不喜欢流(我为这种分析的非技术性表示歉意),我还发现,由于某些类型的数据对其进行了加密或置乱,它无法解释地加快了速度