0
我有一個服務器(在Nodejs開發)與UDP遠程設備上的100s通信。我想基準它。爲此,我需要創建幾個UDP客戶端,每秒鐘與服務器進行通信。由於多線程在Nodejs中是不可能的,所以我該如何實現呢?任何人都可以給我一些解決方案。基於UDP的客戶端在Nodejs
我有一個服務器(在Nodejs開發)與UDP遠程設備上的100s通信。我想基準它。爲此,我需要創建幾個UDP客戶端,每秒鐘與服務器進行通信。由於多線程在Nodejs中是不可能的,所以我該如何實現呢?任何人都可以給我一些解決方案。基於UDP的客戶端在Nodejs
多線程是不可能的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();
});
感謝的人,我婉在不同網頁上四處遊蕩,沒得到我需要的東西... – Usman