Categorie
Programmazione

HTML5: introduzione ai WebSockets

Applicazione server

Come già detto l’applicazione lato server è l’aspetto più cruciale quando si lavora coi WebSockets. Innanzitutto abbiamo molta libertà nello scegliere il paradigma di implementazione del server. Possiamo scegliere tra un server scritto in Java, PHP, Node.js e molti altri linguaggi. Se usiamo PHP  possiamo affidarci a librerie o soluzioni già pronte, come ad esempio qui o qui.

La realizzazione di un server in PHP è sicuramente più semplice di quella in Java ma richiede comunque una certa padronanza del linguaggio di programmazione server side. Una soluzione più semplice, adatta per chi si avvicina ai  WebSockets per la prima volta, può essere quella di usare Node.js, un linguaggio di programmazione quasi identico a JavaScript che permette di realizzare applicazioni lato server. Una guida introduttiva a Node.js è disponibile qui.

Installando Node.js sulla nostra macchina possiamo realizzare un server in grado di gestire i WebSockets in maniera molto più semplice e veloce rispetto a PHP. L’unica accortezza è quella di installare il modulo dei  WebSockets, digitando il comando

npm install websocket

su Windows questo potrebbe dare qualche problema. In caso di errore proviamo ad eseguire

npm install websocket@1.0.3  

websocket

Per realizzare il server possiamo semplicemente copiare e incollare il codice di un qualsiasi server scritto con Node.js. Sul Web ne troviamo parecchi, come ad esempio questo.

Ricopiamo il codice del server in un file che chiamiamo, ad esempio, server.js, dopodiché lo eseguiamo tramite il comando

node server.js

Prima di collegare la nostra client JavaScript al server Node.js dobbiamo però fare una piccola modifica. Se guardiamo al codice del server (vedi link qui sopra) noteremo la seguente istruzione

var connection = request.accept('echo-protocol', request.origin);

Ciò significa che il server accetta connessioni solamente se queste specificano un sotto-protocollo di nome “echo-protocol”? Ma cos’è un sotto-protocollo? Si tratta di un’altra funzionalità dei WebSockets.

Quando costruiamo un oggetto JavaScript di tipo WebSocket dobbiamo indicare l’URL di destinazione del server, come abbiamo fatto a pagina precedente. Il costruttore dell’oggetto WebSocket accetta però un altro parametro opzionale: il sotto-protocollo. Questo può servire per gestire diverse modalità di comunicazione tra client e server. In altre parole è come se il protocollo “ws” fosse quello “portante”, cioè la struttura della trasmissione dati (un po’ come il protocollo TCP/IP sul web), mentre i sotto-protocolli permettono di specializzare la tipologia della connessione in base alla sua funzione (un po’ come i protocolli HTTP e FTP sul Web). Siccome il nostro server Node. js usa un sotto-protocollo di nome “echo-protocol” (il nome è scelto in modo del tutto arbitrario), anche il client dovrà specificare lo stesso valore quando viene creato l’oggetto WebSocket, ad esempio   

var connection = new WebSocket('ws://localhost:8080', 'echo-protocol') ;

Dopo questa modifica l’applicazione client JavaScript che abbiamo visto a pagina precedente sarà in grado di comunicare col nostro server Node.js. 

Conclusioni

I WebSockets sono sicuramente una novità molto interessante di HTML5. La tecnologia potrebbe diventare importante nel caso che risultassero disponibili dei servizi gratuiti e pubblici sul Web, cioè dei server accessibili gratuitamente simili al servizio di Echo visto nelle pagine precedenti. In questo scenario la possibilità di realizzare delle chiamate client con pochissimo codice JavaScript potrebbe diventare molto interessante. Dobbiamo però considerare che la maggior parte delle applicazioni concrete molto probabilmente richiede un server specifico, con una business logic realizzata in base alle esigenze del progetto. Questo rimane il punto debole della tecnologia, perché potrebbe richiedere tempi di sviluppo quasi paragonabili alle normali architetture client-server. 

Ecco perché la possibilità di realizzare dei server tramite una soluzione come Node.js (o simile) rappresenta forse uno degli scenari più interessanti, che permetterebbe di ridurre tempi i costi di sviluppo realizzando applicazioni robuste e professionali. Data la crescente popolarità di Node.js possiamo ipotizzare che i WebSockets  diventeranno presto uno strumento efficiente nella nostra cassetta degli attrezzi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.