2016-08-23 9 views
0

私はUDP上の100sのリモートデバイスと通信するサーバ(Nodejsで開発された)を持っています。私はそれをベンチマークしたい。そのためには、毎秒サーバーと通信する複数のUDPクライアントを作成する必要があります。 Nodejsではマルチスレッドが不可能なので、どうすればこのことができますか?誰も私に何らかの解決策を教えてもらえますか?NodejsのUDPベースのクライアント

答えて

0

マルチスレッドは、右されていないことをNodejs

では不可能です。 nodejs内のメインイベントループはシングルスレッドのみですが、コールバック関数で非同期関数が呼び出されると、そのI/Oネットワークを実行するスレッドが追加されます。これが終了すると、コールバックメソッドが呼び出され、メインイベントループ(単純に)に戻ります。だから、いくつかのUDPクライアントを作成し、それらを発射させ、UPDサーバーにストレスを与えることは問題ではないという事実によると、client.sendは非同期です。それらを並列に実行するには、モジュールasyncを使用します。

const dgram = require('dgram'); 
const async = require('async'); 

async.parallel([ 
    function(callback) { 
     var client1 = dgram.createSocket('udp4'); 
     client1.send("hello", 41234, 'localhost', function(err) { 
      client1.close(); 
      callback(); 
     }); 
    }, 
    function(callback) { 
     var client2 = dgram.createSocket('udp4'); 
     client2.send("world", 41234, 'localhost', function(err) { 
      client2.close(); 
      callback(); 
     }); 
    } 
], 
// optional callback 
function(err, results) { 
    // I am done here... 
    process.exit(); 
}); 

またはあなたがちょうどこの

const dgram = require('dgram'); 
var client1 = dgram.createSocket('udp4'); 
var client2 = dgram.createSocket('udp4'); 

// This also runs in parallel 
client1.send("hello", 41234, 'localhost', function(err) { 
    client1.close(); 
}); 
client2.send("world", 41234, 'localhost', function(err) { 
    client2.close(); 
}); 
+0

おかげで男を行うことができますが、私は別のページにうろついWAN、私は必要なものを得るdidntの... – Usman

関連する問題