我有一台服务器(在Nodejs中开发)与UDP上的100个远程设备通信。我想对它进行基准测试。为此,我需要创建几个每秒与服务器通信的UDP客户端。由于Nodejs中无法实现多线程,所以我该如何实现呢?任何人都可以给我一些解决方案。
答案 0 :(得分: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();
});