【问题标题】:Measuring average transfer rate for data through Node.js socket通过 Node.js 套接字测量数据的平均传输率
【发布时间】:2012-04-10 09:12:02
【问题描述】:

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

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

socket.write(new Buffer(1048576));

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

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

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

【问题讨论】:

    标签: sockets node.js data-transfer


    【解决方案1】:

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

    【讨论】:

    • 不错的主意!谢谢!我将不得不做一些杂耍,因为实际上,.write() 在我的应用程序中被多次调用。后续写入可能会在之前的写入仍在进行中时发生,这将导致计时。但是,我想我想通了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多