1

Node.jsアプリケーション(標準のnet.Socketを使用)と他のアプリケーションとの間に通常のTCPソケット接続があります。

1MBのバッファを送信するとします。

socket.write(new Buffer(1048576));

これは非ブロッキング方式で実行されますが、明らかにデータは瞬時に送信されません。

Node.jsアプリケーションから、基盤となるシステムが内部ストリームバッファーを送信しているデータレートを測定するにはどうすればよいですか?

最終的には、過去数秒間に相手側のクライアントに送信されるデータの平均速度を知る必要があります。これは可能ですか?

4

1 に答える 1

3

書き込みでコールバックを使用してみてください

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 に答える