0
私はUDP上の100sのリモートデバイスと通信するサーバ(Nodejsで開発された)を持っています。私はそれをベンチマークしたい。そのためには、毎秒サーバーと通信する複数のUDPクライアントを作成する必要があります。 Nodejsではマルチスレッドが不可能なので、どうすればこのことができますか?誰も私に何らかの解決策を教えてもらえますか?NodejsのUDPベースのクライアント
私はUDP上の100sのリモートデバイスと通信するサーバ(Nodejsで開発された)を持っています。私はそれをベンチマークしたい。そのためには、毎秒サーバーと通信する複数のUDPクライアントを作成する必要があります。 Nodejsではマルチスレッドが不可能なので、どうすればこのことができますか?誰も私に何らかの解決策を教えてもらえますか?NodejsのUDPベースのクライアント
マルチスレッドは、右されていないことを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();
});
おかげで男を行うことができますが、私は別のページにうろついWAN、私は必要なものを得るdidntの... – Usman