私は Node.js を初めて使用し、UDP パケットのペイロードを受信して処理するアプリケーションを要求しています。
1 秒あたり 400 件を超えるメッセージについて話しているので、1 分あたり 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