Sono abbastanza nuovo su Node.js e ho una richiesta per un'applicazione che riceverebbe un carico utile di pacchetti UDP e lo elaborerebbe.Come configurare un server UDP node.js molto veloce
Sto parlando di più di 400 messaggi al secondo, che raggiungerebbero qualcosa come 200.000 messaggi/minuto.
Ho scritto un codice per configurare un server UDP (prelevato dai documenti qui http://nodejs.org/api/all.html#all_udp_datagram_sockets in realtà) ma sta perdendo qualcosa attorno al 5% dei pacchetti.
Quello che ho davvero bisogno di sviluppare è un server che otterrebbe il pacchetto e lo invierà a un altro lavoratore fare il lavoro con il messaggio. Ma sembra che il threading in node.js sia un incubo.
Questo è il mio core è:
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
Ricorda che i datagrammi, a differenza dei socket TCP, non sono garantiti per il ricevimento. Invece, i datagrammi si concentrano sulla velocità, senza riconoscere singoli messaggi. – skeggse
Sono cose come queste che mi hanno fatto passare a Go e non mi sono mai voltato indietro. –
@AParacha Si prega di elaborare, sto ascoltando: D –