Prima dei WebSocket universali
Nel 2010 WebSocket è ancora in draft, supporto browser frammentato (IE8/9 no). Serve una libreria che astraga real-time su Node con fallback a long polling, streaming, JSONP. Socket.IO nasce nel 2010 da Guillermo Rauch (poi founder di Vercel).
Il rilascio 1.0
Socket.IO 1.0 è pubblicato il 28 maggio 2014. Riscrittura completa che separa il transport layer (engine.io) dal protocollo applicativo. Licenza MIT.
// server
const io = require('socket.io')(httpServer);
io.on('connection', (socket) => {
socket.emit('welcome', 'hi');
socket.on('chat', (msg) => io.to('room1').emit('chat', msg));
});
// client
const socket = io('wss://api.example.com');
socket.on('welcome', (m) => console.log(m));
Caratteristiche
- Transport fallback — WebSocket → long polling automatico
- Auto-reconnect con exponential backoff
- Rooms — broadcast a gruppi di socket
- Namespaces — multiplexing su singola connessione
- Acknowledgements — callback per garanzia ricezione
- Binary support — ArrayBuffer, Blob
- Redis adapter — multi-processo/multi-server scaling
- Middleware — auth, logging
Casi d’uso
- Chat e messaging
- Notifiche push browser
- Collaborazione real-time (cursori condivisi, typing indicator)
- Dashboard live — monitoring, analytics
- Gaming multiplayer web
- Drawing app condivise
Versioni
- 2.x (2017) — binary improvements
- 3.x (novembre 2020) — breaking changes, TypeScript-first
- 4.x (febbraio 2021) — stato attuale, catch-all listeners
- v5 (2024) — connection state recovery
Concorrenti
- ws — libreria WebSocket Node pura, più veloce, niente fallback
- Primus — abstraction su più transport
- SockJS — simile, Node + browser
- Centrifugo — broker real-time Go
- Phoenix Channels (Elixir)
- SignalR (.NET)
Nel contesto italiano
Socket.IO è usato ampiamente in:
- Chat customer support aziendali (Italiaonline, Mediaset, TIM)
- Piattaforme collaborative italiane
- E-commerce real-time (notifiche ordine)
- Trading desk (feed prezzi per PMI broker)
- IoT dashboard (monitoraggio flotte, sensori)
L’ecosistema è ancora dominante per progetti Node.js che richiedono real-time senza complicazioni di compatibilità.
Riferimenti: Socket.IO 1.0 (28 maggio 2014). Guillermo Rauch (Vercel founder). Licenza MIT. Engine.io transport layer. Rooms, namespaces, ack. Versione 4.x standard corrente.
