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 11 (marzo 2012)
  • IE 10 (settembre 2012)
  • Safari 6 (luglio 2012)
  • Opera 12.1 (novembre 2012)

Dal 2013 WebSocket è universalmente disponibile.

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

Evoluzione

  • RFC 7692 (2015) — permessage-deflate compression
  • RFC 8441 (2018) — WebSocket over HTTP/2
  • RFC 9220 (2022) — WebSocket over HTTP/3

WebTransport (2021+) su QUIC/HTTP/3 propone evoluzione per datagram UDP-like in browser, ma WebSocket resta lo standard dominante.

Nel contesto italiano

WebSocket è alla base di molte applicazioni real-time italiane:

  • Fintech e trading (Banca Sella, Fineco, piattaforme crypto)
  • eSports e gaming
  • Collaborazione (aziende fintech, software gestionali SaaS)
  • Monitoring sanitario (telemedicina, monitoraggio pazienti)

Riferimenti: RFC 6455 (dicembre 2011). IETF. Ian Fette (Google), Alexey Melnikov. Schemi ws://, wss://. Adozione browser completa 2013. Estensioni successive RFC 7692, RFC 8441 (HTTP/2), RFC 9220 (HTTP/3).

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