Tôi khá mới đối với Node.js và tôi có một yêu cầu cho một ứng dụng sẽ nhận được một tải trọng của các gói UDP và xử lý nó.Cách thiết lập máy chủ UDP node.js rất nhanh
Tôi đang nói về hơn 400 thư mỗi giây, có thể đạt tới 200.000 thư/phút.
Tôi đã viết mã để thiết lập máy chủ UDP (được lấy từ tài liệu ở đây http://nodejs.org/api/all.html#all_udp_datagram_sockets thực sự) nhưng nó mất đi khoảng 5% gói.
Điều tôi thực sự cần phát triển là máy chủ sẽ nhận gói và gửi đến một nhân viên khác thực hiện công việc với thư. Nhưng có vẻ như luồng trong node.js là một cơn ác mộng.
Đây là cốt lõi của tôi như là:
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
Hãy nhớ rằng datagrams, không giống như TCP socket, không nhận được guarenteed. Thay vào đó, các gói dữ liệu tập trung vào tốc độ, mà không thừa nhận các thông báo riêng lẻ. – skeggse
Đó là những thứ như thế khiến tôi chuyển sang Go và không bao giờ nhìn lại. –
@AParacha Xin hãy giải thích, tôi đang nghe: D –