저는 Node.js에 익숙하지 않아 UDP 패킷의 페이로드를 수신하고 처리하는 애플리케이션에 대한 요청을 받았습니다.매우 빠른 node.js UDP 서버를 설정하는 방법
나는 초당 400 개 이상의 메시지에 대해 이야기하고 있는데, 이는 200,000 메시지/분에 도달 할 것입니다.
UDP 서버를 설치하기위한 코드를 작성했지만 (실제로 여기에서 문서 http://nodejs.org/api/all.html#all_udp_datagram_sockets을 얻음) 약 5 %의 패킷이 손실됩니다.
내가 실제로 개발해야하는 것은 패킷을 받고 다른 서버로 보내야하는 서버입니다. worker 메시지로 작업하십시오. 하지만 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
내가 Go로 전환하고 결코 뒤돌아 보지 않은 것은 이런 것들입니다. –
@AParacha 제발 좀 더 자세히 설명해 드리겠습니다. D –