Quì un semplice tutorial su come configurare un server e client UDP in Node.js.
Per farlo, una libreria del core ci viene in soccorso, dgram.

Server UDP:

var PORT = 33333
var HOST = '127.0.0.1'
 
var dgram = require('dgram')
var server = dgram.createSocket('udp4')
 
server.on('listening', function () {
    var address = server.address()
    console.log('UDP Server listening on ' + address.address + ":" + address.port)
})
 
server.on('message', function (message, remote) {
    console.log(remote.address + ':' + remote.port +' - ' + message)
 
})
 
server.bind(PORT, HOST);

Alcune note in merito:

1. HOST è opzionale in server.bind(). Se omesso si assume l’utilizzo di 0.0.0.0.
2. L’evento message si scatena quando arriva un pacchetto UDP destinato a questo server.
3. L’evento listening si scatena quando il server è stato inizializzato ed è pronto a ricevere i pacchetti UDP.
4. dgram.createSocket() accetta sia udp4 che udp6, rispettivamente per l’utilizzo di IPv4 e IPv6.

Client UDP:

var PORT = 33333
var HOST = '127.0.0.1'
 
var dgram = require('dgram')
var message = new Buffer('My KungFu is Good!')
 
var client = dgram.createSocket('udp4')
client.send(message, 0, message.length, PORT, HOST, function(err, bytes) {
    if (err) throw err
    console.log('UDP message sent to ' + HOST +':'+ PORT)
    client.close()
})

Alcune note in merito:

1. client.send() richiede espressamente un Buffer, nè un numero nè una stringa.
2. Il secondo parametro 0, di client.send(), è l’offset nel buffer che denota l’inizio del pacchetto UDP.
3. Il terzo parametro message.length, è il numero di byte che vogliam inviare partendo dall’offset nel buffer. Nel nostro caso l’offset è a 0 e la lunghezza del messaggio è 16 bytes, che è abbastanza picolo e dunque l’intero buffer è contenuto in un singolo pacchetto UDP. Potrebbe non essere sempre così. Per buffer più grandi potrebbe essere necessario iterare sul buffer e inviare piccole parti (chunks).
4. Eccedere la dimensione di un pacchetto predefinita di un pacchetto UDP non porta ad errori. Il pacchetto viene silenziosamente scartato. E’ la natura dell’UDP.
5. L’oggetto err nella callback di client.send() infatti si riferisce solo all’esito del DNS lookup.
6. Assicuratevi che l’indirizzo IP / HOST è conforme alla versione di IP che usate. Altrimenti i vostri pacchetti non raggiungeranno la destinazione.

Questo è tutto per ora!