2016-08-23 114 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