WebSocket è un pro­to­col­lo di rete basato su TCP, che definisce le modalità di scambio dei dati tra le reti. Poiché funziona in modo af­fi­da­bi­le e molto efficace, viene uti­liz­za­to da quasi tutti i client. Il TCP sta­bi­li­sce una con­nes­sio­ne tra due punti finali di co­mu­ni­ca­zio­ne, che sono chiamati socket. In questo modo è possibile collegare i dati in due direzioni.

Con una con­nes­sio­ne bi­di­re­zio­na­le come in WebSocket (o Web Socket), i dati vengono scambiati si­mul­ta­nea­men­te in entrambe le direzioni. Il vantaggio è che i dati vengono vi­sua­liz­za­ti ra­pi­da­men­te. WebSocket in par­ti­co­la­re consente una co­mu­ni­ca­zio­ne diretta tra un’ap­pli­ca­zio­ne web e un server WebSocket. Questo significa con­cre­ta­men­te ri­chia­ma­re una pagina web e vi­sua­liz­zar­la in “tempo reale”.

Come funziona Websocket?

Come viene ri­chia­ma­to un sito web senza WebSocket? Su Internet, le pagine web vengono so­li­ta­men­te tra­sfe­ri­te uti­liz­zan­do una con­nes­sio­ne HTTP. Il pro­to­col­lo viene uti­liz­za­to per il tra­sfe­ri­men­to dei dati e consente di caricare le pagine web nel browser. A tal fine, il vostro client fa una richiesta al server per ogni azione (ad esesempio a ogni clic).

Per ri­chia­ma­re un sito web, il client deve prima inviare una richiesta al server tramite HTTP. Solo allora il server può fornire le risposte e i contenuti de­si­de­ra­ti. Si tratta di un semplice modello di richiesta e risposta, che spesso implica un notevole ritardo tra una e l’altra.

Con WebSocket è stata creata la pos­si­bi­li­tà di vi­sua­liz­za­re di­na­mi­ca­men­te una pagina web in tempo reale. Con il pro­to­col­lo WebSocket, è suf­fi­cien­te che il client apra la con­nes­sio­ne a un server web. La con­nes­sio­ne tra client e server viene stabilita con l’handshake del pro­to­col­lo WebSocket. In questo caso un client invia al server tutte le iden­ti­fi­ca­zio­ni ne­ces­sa­rie per lo scambio d’in­for­ma­zio­ni.

Dopo l’handshake, il canale di co­mu­ni­ca­zio­ne rimane pra­ti­ca­men­te aperto. Il server può diventare attivo da solo e fornire al client tutte le in­for­ma­zio­ni senza attendere le richieste. Anche i messaggi push sui siti web fun­zio­na­no secondo questo principio. Se ci sono nuove in­for­ma­zio­ni lato server, il server le comunica al client senza che venga emessa una richiesta extra lato client.

Ini­zial­men­te il client invia una classica richiesta con Websocket, come nel caso di HTTP, ma la con­nes­sio­ne viene stabilita su una con­nes­sio­ne TCP esistente. L’handshake tra client e server si presenta come segue:

Il client fa la richiesta:

GET /chatService HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

Il server fornisce la risposta:

HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: superchat

Il nuovo schema URL di WebSocket per le pagine web eseguite è descritto con ws invece di http. Per una con­nes­sio­ne sicura, se­le­zio­na­te wss, come fareste per una con­nes­sio­ne sicura con https.

A cosa serve WebSocket?

WebSocket viene uti­liz­za­to ogni volta che è ne­ces­sa­ria una con­nes­sio­ne rapida. Pensate a una live chat di as­si­sten­za, news ticker, ticker di borsa, messenger e giochi in tempo reale. Con le comuni richieste di con­nes­sio­ne molte aziende erano al limite.

Anche i social media possono trarre vantaggio da WebSocket, con­sen­ten­do col­le­ga­men­ti in diretta con altre persone e l’invio e la ricezione di messaggi immediati. WebSocket è sempre utile quando si devono rag­giun­ge­re velocità di tra­smis­sio­ne elevate e mantenuta una bassa latenza.

Quali sono i vantaggi di WebSocket?

Con l’utilizzo classico tramite con­nes­sio­ne HTTP il problema è che il client carica sempre la pagina HTML completa. Come soluzione è stata svi­lup­pa­ta la tec­no­lo­gia AJAX. Tuttavia, essa ha lo svan­tag­gio che, fungendo da col­le­ga­men­to uni­di­re­zio­na­le, permette la co­mu­ni­ca­zio­ne in una sola direzione, il che porta a notevoli ritardi rispetto al carico di lavoro odierno e so­prat­tut­to con le ap­pli­ca­zio­ni di chat. Come con­nes­sio­ne bi­di­re­zio­na­le con scambio in entrambe le direzioni, WebSocket permette il col­le­ga­men­to diretto con il browser e questo porta a tempi di ca­ri­ca­men­to veloci. Non appena un messaggio è di­spo­ni­bi­le, ad esempio in una chat di as­si­sten­za, viene vi­sua­liz­za­to di­ret­ta­men­te.

Esempi pratici di WebSocket

WebSocket è adatto a chiunque abbia bisogno di una con­nes­sio­ne veloce a Internet. Una con­nes­sio­ne in tempo reale tra client e server oggi è ne­ces­sa­ria in diversi ambiti, per poter offrire de­ter­mi­na­ti servizi senza problemi. Tra questi, ad esempio:

  • Giochi online
  • Piat­ta­for­me di vendita e acquisto come eBay
  • Chat di as­si­sten­za
  • Live sport ticker
  • Ag­gior­na­men­ti in tempo reale dai social media

WebSocket non è un sostituto diretto di HTTP, ma può essere uti­liz­za­to come un ef­fi­cien­te canale di co­mu­ni­ca­zio­ne bi­di­re­zio­na­le ovunque sia ne­ces­sa­ria la vi­sua­liz­za­zio­ne in tempo reale.

Dove è già im­ple­men­ta­to WebSocket?

Per uti­liz­za­re WebSocket, è ne­ces­sa­rio un web browser ag­gior­na­to:

  • Internet Explorer dalla versione 10
  • Firefox dalla versione 6
  • Chrome dalla versione 14
  • Opera dalla versione 12.10
  • Safari dalla versione 6

Lato server, WebSocket può essere im­ple­men­ta­to con i seguenti linguaggi di pro­gram­ma­zio­ne e framework:

  • Node.js
    • Socket.IO
    • WebSocket-Node
    • ws
  • Java
    • Jetty
  • Ruby
    • Event­Ma­chi­ne
  • Python
    • py­Web­Soc­ket
    • Tornado
  • Erlang
    • Shirasu
  • C++
    • li­b­Web­Soc­ke­ts
  • .NET
    • Su­per­Web­Soc­ket
In sintesi

WebSocket è una tec­no­lo­gia che rientra nel contesto dello sviluppo di HTML5, nel tentativo di rendere il web più veloce, più dinamico e più sicuro. Questo ef­fi­cien­te pro­to­col­lo rende possibili le ap­pli­ca­zio­ni web moderne, che agiscono molto più ve­lo­ce­men­te della tra­di­zio­na­le co­mu­ni­ca­zio­ne HTTP. Cio­no­no­stan­te, il vecchio pro­to­col­lo non dovrebbe essere abolito, rimanendo ancora uno standard im­por­tan­te in Internet.

Vai al menu prin­ci­pa­le