通过Node.js套接字测量数据的平均传输速率

时间:2012-04-10 00:42:16

标签: sockets node.js data-transfer

我在Node.js应用程序(使用标准net.Socket)和其他一些应用程序之间有一个常规的TCP套接字连接。

假设我发送1MB缓冲区:

socket.write(new Buffer(1048576));

虽然这是以非阻塞方式完成的,但显然数据不会立即传输。

如何从我的Node.js应用程序中测量底层系统发送内部流缓冲区的数据速率?

最后,我只需要知道在过去几秒内发送到客户端的数据的平均速度。这可能吗?

1 个答案:

答案 0 :(得分:3)

尝试使用callback in write

var net = require('net');
var s = net.createConnection(8888);
s.on('connect', function() {
    function test() {
       var len = 512*1048576;
       var start = +new Date();
       var b = new Buffer(len);
       b.fill('x');
       s.write(b, function() {
           console.log(len + ' bytes written, ' + (1000*len/(+new Date() - start)).toString() + ' bytes/sec');
           test();
       });
    }
    test();
});

另一端nc -l 8888 > /dev/null我得到350M字节/秒