2016-08-23 76 views
0

我有一个服务器(在Nodejs开发)与UDP远程设备上的100s通信。我想基准它。为此,我需要创建几个UDP客户端,每秒钟与服务器进行通信。由于多线程在Nodejs中是不可能的,所以我该如何实现呢?任何人都可以给我一些解决方案。基于UDP的客户端在Nodejs

回答

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

感谢的人,我婉在不同网页上四处游荡,没得到我需要的东西... – Usman