Creazione di un server di messaggistica utilizzando TCP/IP e Node.JS

Come realizzare da zero un piccolo server TCP/IP per la messaggistica istantanea (chat) utilizzando gli strumenti messi a disposizione da Node.JS

Il modulo Net

Il modulo Net

Prima di vedere il codice della chat, facciamo un po’ di pratica colmodulo Net. Questo è il modulo di Node.js che permette di gestire la comunicazione basata sul protocollo TCP/IP. Come vedremo tra poco il codice è molto simile a quello usato nelle prime lezioni per realizzare un server HTTP. Le differenze sono davvero minime. L’unica nozione che di interesse introdurre è il concetto di socket.

 

Un socket può essere pensato come un “tubo” che collega client e server. Quando apriamo la connessione (il socket) significa che i due interlocutori (client e server) prendono in mano il tubo. In qualunque momento ciascuno dei due può parlare attraverso il tubo, o trasmettere un messaggio, un po’ come si faceva con la posta pneumatica. Ciò non è molto diverso, almeno a grandi linee, dalla normale comunicazione via HTTP. Data questa somiglianza il codice del server può ricalcare senza alcun problema quello usato per implementare un server HTTP. Abbiamo così

 

 

La somiglianza col codice del server HTTP delle prime lezioni è evidente. Vediamo quali sono le differenze: ovviamente, nella prima riga, invece di caricare in modo HTTP carichiamo il modulo Net, per rendere disponibili gli oggetti e le API relative al protocollo TCP/IP. L’altra differenza sta nella funzione socket.on('data',...): questa viene invocata tutte le volte che l’applicazione client comunica qualcosa attraverso il socket (il nostro tubo). In questo caso, quando il server si accorge dell’arrivo di alcuni dati, viene invocata la callback (anonima) che contiene l’istruzione

 

 

la quale si occupa di scrivere il dato appena ricevuto nel socket. In altre parole il codice qui sopra è un sistema di eco, nel vero senso del termine: tutto ciò che il client scrive nel socket viene ripetuto dal server, e rispedito al mittente.

Per testare il funzionamento del server possiamo lanciare l’applicazione telnet

 

 

Come risultato otterremo prima il messaggio “Hello World!”, scritto dal server in risposta al nostro collegamento. Subito dopo, se proviamo a scrivere qualcosa, vedremo che il nostro testo risulta duplicato, proprio per effetto dell’eco.