1

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

假设我发送一个 1MB 的缓冲区:

socket.write(new Buffer(1048576));

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

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

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

4

1 回答 1

3

尝试在 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 字节/秒

于 2012-04-10T01:12:02.593 回答