Categorie
Programmazione

HTML5: introduzione ai WebSockets

Le novità più popolari introdotte da HTML5 riguardano spesso gli aspetti più tradizionali del markup. Si parla molto delle nuove tag semantiche, della gestione degli elementi multimediali, dei canvas e di altre nuove funzionalità HTML. È invece più difficile trovare discussioni sulle altre novità che verranno introdotte con HTML5, come ad esempio i WebSockets, la gestione dei cookies, la sincronizzazione delle pagine off-line della programmazione orientata sui Web Workers. Queste novità sono di natura più tecnica rispetto a quelle ampiamente discusse sul Web, nel senso che dovrebbero interessare i programmatori “più tecnici”: si tratta comunque di novità che riguardano le funzionalità dello sviluppo front-end dei siti Web.

Con questo articolo vogliamo introdurre alcuni dei concetti che riguardano i cosidetti WebSockets. Per capire di cosa si parla dovremo prima introdurre a grandi linee alcuni aspetti teorici, per aiutare i meno esperti ad inquadrare l’argomento. Dopodiché vedremo qualche semplice esempio di client in JavaScript. Infine l’affronteremo l’argomento spinoso del server: questa è infatti la parte più complessa dell’architettura offerta dai WebSockets, che non potremo trattare in modo esaustivo: discuteremo comunque le diverse soluzioni disponibili, cercando di evidenziarne pregi e difetti.

Cenni teorici

Un socket è un concetto fondamentale delle moderne tecnologie informatiche. Quasi tutte le comunicazioni di rete si basano sull’esistenza dei socket. Un socket può essere pensato come un oggetto condiviso dall’applicazione client e dal server, attraverso il quale i due attori possono comunicare. Un’analogia molto semplice ed efficace è quella del “tubo”: possiamo pensare al socket come ad un tubo molto lungo. Un’estremità del tubo si affaccia su un’applicazione client, l’altra estremità sul server. Ciò permette a client e server di mandarsi di messaggi, in maniera simile ai plichi inviati attraverso posta pneumatica. 

Molti linguaggi di programmazione permettono di gestire i socket. Tutte le volte che un progetto prevede una comunicazione tra client e server da qualche parte molto probabilmente qualcuno si è occupato di scrivere il codice che implementa la gestione di un socket. In realtà di solito vengono aperti molti socket, perché il server ne crea uno per ogni client a cui è connesso. Ciò avviene indifferentemente dal protocollo di comunicazione. Ad esempio, quando carichiamo la pagina via HTTP, i dati vengono quasi sempre trasmessi attraverso un socket aperto sul protocollo TCP/IP.

Per nostra fortuna non ci serve entrare nei dettagli del funzionamento dei socket per capire come lavorare con i  WebSockets HTML5. È però necessario capire lo scenario di lavoro, per non cadere nell’errore di di porsi domande come “Ho scritto il codice ma non funziona? Devo scrivere anche quello del server?”.  Ovviamente la risposta è sì: se vogliamo usare i  WebSockets HTML5 abbiamo bisogno di entrambi i componenti (client e server).

Come vedremo nelle prossime pagine la realizzazione di un’applicazione client è davvero semplice. Ci basterà conoscere un po’ di JavaScript e avere a disposizione un server per fare delle prove: nel nostro caso useremo un server pubblico, disponibile sul Web, per evitare di doverne scrivere uno ad hoc.

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.