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
- Handshake HTTP Upgrade — client invia
GETcon headerUpgrade: websocket - Server risponde
101 Switching Protocols - Connessione TCP persistente — dopo handshake, frame binari WebSocket
- Framing — frame di tipo text/binary/close/ping/pong con mascheramento client→server
- URI scheme —
ws://(plaintext) owss://(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).
