我对 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