Categorie
Programmazione

HTML5: introduzione ai WebSockets

Applicazione Client

Vediamo un esempio di client realizzata in JavaScript. Per poterlo eseguire abbiamo bisogno di un server. In questo caso useremo un server pubblico che offre un servizio di risposta echo: il server ci risponderà ripetendo qualunque messaggio da noi inviato, un po’ come l’eco in montagna. L’indirizzo del server è il seguente:

ws://echo.websocket.org/ 

Notiamo la presenza della sigla “ws” come identificatore del protocollo, al posto dei tradizionali “http”, “https” o “ftp”. Ciò indica che la comunicazione avviene attraverso il protocollo ws, che chiaramente sta per WebSockets. Se dovessimo usare un nostro server cambierà l’URL di destinazione, mentre la sigla ws resterà invariata.

Il codice JavaScript per aprire una connessione dal client verso il server è il seguente 

var connection = new WebSocket('ws://echo.websocket.org/') ;

se l’operazione va a buon fine avremo a disposizione un oggetto connection, le cui API permettono di inviare e ricevere messaggi. Ad esempio, se vogliamo mandare un generico messaggio possiamo scrivere  

connection.send('Ciao!') ;

oltre al metodo send l’oggetto connection è associato ad alcuni identificatori di eventi speciali. Quelli più interessanti sono gli eventi onopen, onerror e onmessage. Il primo evento (onopen) si verifica nel momento in cui la connessione viene aperta. Il secondo (onerror) viene attivato in caso di errore durante la comunicazione, mentre l’ultimo (onmessage) riguarda la ricezione di messaggi nel client.

Facendo riferimento all’oggetto  connection definito più sopra possiamo scrivere un piccolo client nel seguente modo 

connection.onopen = function () {

   connection.send('My ping message') ;

} ;

connection.onerror = function (error) {

   console.log('WebSocket Error ' + error) ;

} ;

connection.onmessage = function (e) {

   console.log('Server: ' + e.data) ;

} ;

Siccome ci stiamo appoggiando ad un server pubblico (echo.websocket.org) per fare delle prove basta copiare il codice qui sopra nel browser ed eseguirlo come un normale JavaScript. Se il server è attivo riceveremo come risposta un’eco di qualunque nostro messaggio. Semplice no?

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.