我對Node.js很陌生,我有一個應用程序的請求會接收UDP數據包的有效載荷並處理它。如何設置一個非常快的node.js UDP服務器
我正在談論每秒超過400條消息,這將達到像200.000條消息/分鐘。
我已經編寫了一個代碼來設置一個UDP服務器(實際上從文檔http://nodejs.org/api/all.html#all_udp_datagram_sockets中獲取),但它丟失了大約5%的數據包。
我真正需要開發的是一個服務器,它將獲得該數據包並將其發送給另一個工作人員完成與該消息的工作。但看起來像node.js中的線程是一場噩夢。
這是我的核心爲是:
var dgram = require("dgram");
var fs = require("fs");
var stream = fs.createWriteStream("received.json",{ flags: 'w',
encoding: "utf8",
mode: 0666 });
var server = dgram.createSocket("udp4");
server.on("message", function (msg, rinfo) {
console.log("server got: " + msg + " from " +
rinfo.address + ":" + rinfo.port);
stream.write(msg);
});
server.on("listening", function() {
var address = server.address();
console.log("server listening " +
address.address + ":" + address.port);
});
server.bind(41234);
// server listening 0.0.0.0:41234
請記住,數據報,不像TCP套接字,沒有保證的廣告收據。相反,數據報關注速度,而不需要確認單個消息。 – skeggse 2013-01-09 08:10:05
這就是這樣的事情,讓我切換到Go,永不回頭。 – 2017-02-28 17:57:37
@AParacha請詳細說明,我在聽:D – 2017-07-29 13:06:59