2026-07-14

Tecnologie Real-Time per il Web: WebSocket, SSE, WebRTC e Altro

Tecnologie Real-Time per il Web: WebSocket, SSE, WebRTC e Altro

Il real-time abilita aggiornamenti istantanei: chat, notifiche, dashboard live, editing collaborativo, gaming. Multiple tecnologie servono bisogni diversi.

WebSocket

Full-duplex, bidirezionale su singola connessione TCP. RFC 6455. Handshake: HTTP Upgrade → 101 Switching Protocols. Frame: Text, binary, ping/pong, close. Subprotocolli: graphql-ws, MQTT, custom. Scaling: Sticky sessions, Redis pub/sub, esterni (Pusher, Ably, Centrifugo). Migliore per: Alta frequenza bidirezionale (chat, gaming, trading).

Server-Sent Events (SSE)

Unidirezionale (server → client) su HTTP/HTTPS. Riconnessione automatica, retry built-in. Text-based (UTF-8), API EventSource. Funziona su HTTP/2 (multiplexed). Limite 6 connessioni per dominio (HTTP/1.1). Niente supporto binary. Migliore per: Notifiche, feed, punteggi live, aggiornamenti server-to-client.

WebRTC

Peer-to-peer (browser-to-browser) per audio, video, dati. ICE/STUN/TURN per NAT traversal. Signaling server richiesto (WebSocket/HTTP). DataChannels: Dati arbitrari (reliable/unordered). Topologie Mesh, SFU, MCU. Migliore per: Videochiamate, screen sharing, trasferimento file, gaming low-latency.

MQTT over WebSockets

Protocollo pub/sub leggero (origini IoT). QoS 0/1/2. Retained messages, last will. Broker: Mosquitto, EMQX, VerneMQ, HiveMQ. Trasporto WebSocket per browser. Migliore per: Dashboard IoT, telemetria real-time, comunicazione device.

Long Polling

Client richiede, server tiene finché dati. Fallback per browser vecchi. Latenza più alta, più risorse server. Usato da Socket.IO come fallback. Evita se WebSocket/SSE disponibili.

HTTP/2 e HTTP/3 Server Push

Server spinge risorse prima che client richieda. HTTP/2: PUSH_PROMISE (deprecato per web). HTTP/3: Early Hints (103) + preload. Non per dati applicazione. Usa per: CSS critico, font, hero images.

Matrice Confronto

WebSocket: Bidirezionale, binary, overhead basso, scaling complesso. SSE: Unidirezionale, semplice, auto-reconnect, HTTP/2 friendly. WebRTC: P2P, media + dati, NAT traversal, complesso. MQTT: Pub/sub, QoS, leggero, broker necessario. Long Poll: Solo fallback. Scegli basato su: Direzione, frequenza, tipo dati, scala, supporto browser.

Librerie e Servizi

WebSocket: ws (Node), Socket.IO (fallback, room), uWebSockets.js (perf), Gorilla (Go). SSE: Native EventSource, sse.js. WebRTC: Simple-peer, PeerJS, Mediasoup (SFU), LiveKit, Daily.co. Gestiti: Pusher, Ably, Firebase Realtime DB, Supabase Realtime, PartyKit. MQTT: MQTT.js, Aedes (broker).

Scaling Real-Time

Stateless: Redis pub/sub per broadcast. Sticky sessions: Load balancer affinity. Connection state: Redis (user → server mapping). Orizzontale: Consistent hashing. Presence: Heartbeat + TTL keys. Sharding: Per room/canale. Servizi gestiti gestiscono scaling automaticamente.

Lavoriamo insieme

Hai bisogno di maggiori informazioni, aiuto con il tuo progetto o di sviluppare un'idea?

Che si tratti di una domanda semplice, un dubbio rapido o una chat di 5 minuti, mandami un messaggio—non costa nulla e sono sempre pronto ad aiutare. Mi piace ascoltare per capire il problema, essere creativo nelle soluzioni e puntare a idee semplici, affidabili e non complicate da realizzare rapidamente.

Contattami

Cambia Argomento

Scegli un argomento specializzato da esplorare: