WebSocket RFC 6455: il protocollo per il web real-time

WebSocket RFC 6455 (dicembre 2011): protocollo standard IETF per comunicazione full-duplex browser-server su TCP. Handshake HTTP, framing binario, supporto universale dei browser dal 2012. Fondamento di chat, trading, gaming web.

Open SourceWeb WebSocketRFC 6455IETFReal-timeHTTPOpen SourceWeb

Il limite del polling

Prima di WebSocket, la comunicazione “real-time” tra browser e server è realizzata con workaround:

  • Short polling — client ripete richieste HTTP ogni N secondi
  • Long polling — richiesta HTTP tenuta aperta fino a evento
  • Comet — tecniche di streaming HTTP
  • Server-Sent Events (2006-2009) — unidirezionale server→client

Nessuna è efficiente per comunicazione bidirezionale a bassa latenza (chat, trading, gaming, live dashboard).

Il rilascio

RFC 6455 è pubblicato dall’IETF nel dicembre 2011. Autori principali: Ian Fette (Google), Alexey Melnikov. Il protocollo era stato introdotto in bozza nel 2008 da Ian Hickson (HTML5 spec) e Michael Carter.

Il draft finale è lavorato da un gruppo di lavoro che include browser vendor, Apache Foundation, altri implementatori.

Come funziona

  1. Handshake HTTP Upgrade — client invia GET con header Upgrade: websocket
  2. Server risponde 101 Switching Protocols
  3. Connessione TCP persistente — dopo handshake, frame binari WebSocket
  4. Framing — frame di tipo text/binary/close/ping/pong con mascheramento client→server
  5. URI schemews:// (plaintext) o wss:// (TLS)
const ws = new WebSocket('wss://api.example.com/stream');
ws.onmessage = (e) => console.log(e.data);
ws.send(JSON.stringify({ action: 'subscribe' }));

Adozione browser

  • Chrome 14 (settembre 2011) — supporto finale
  • Firefox — supporto in arrivo nelle release 2012
  • Safari — in roadmap per WebKit

Con la diffusione di questi browser si prevede disponibilità universale entro la seconda metà del 2012.

Librerie e framework

Il protocollo viene adottato rapidamente:

  • Socket.IO (2010, fallback per browser legacy)
  • ws — libreria Node.js, più veloce
  • Phoenix Channels (Elixir)
  • SignalR (.NET)
  • Django Channels (Python)
  • ActionCable (Rails 5)
  • Spring WebSocket (Java)

Casi d’uso

  • Chat — Slack, Discord, WhatsApp Web
  • Trading — orderbook real-time, prezzi live
  • Gaming — multiplayer online
  • Collaborazione — Google Docs, Figma, Notion
  • Dashboard live — monitoring, observability
  • IoT — telemetria, controllo remoto
  • Notifiche push — web apps

Nel contesto italiano

WebSocket si candida a diventare il fondamento delle applicazioni real-time italiane: fintech e trading online, monitoraggio sanitario, collaborazione SaaS, gaming online iniziano a progettare architetture che includono un canale bidirezionale persistente.


Riferimenti: RFC 6455 (dicembre 2011). IETF. Ian Fette (Google), Alexey Melnikov. Schemi ws://, wss://.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi