0Pricing
React Academy · Lezione

Confronto tra SSE, WebSocket e polling

Confrontare SSE (push unidirezionale), WebSocket (bidirezionale) e polling in base all'adeguatezza e alla complessità del caso d'uso

Confronto tra SSE, WebSocket e polling è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

WebSockets: connessione bidirezionale persistente

WebSockets stabilisce una connessione TCP persistente tra client e server. Entrambi i lati possono inviare messaggi in qualsiasi momento, perciò WebSockets è ideale per comunicazioni interattive realmente in tempo reale: applicazioni di chat, modifica collaborativa di documenti, giochi multiplayer e cursori in tempo reale. La connessione rimane aperta finché una delle due parti non la chiude esplicitamente.

Server-Sent Events: push unidirezionale

SSE (Server-Sent Events) utilizza una normale connessione HTTP attraverso la quale il server trasmette dati al client come serie di eventi. La connessione è unidirezionale: solo il server invia dati. Il client non può inviare messaggi attraverso la connessione SSE; per farlo, esegue richieste HTTP separate. SSE viene implementato tramite l'API del browser EventSource.

Short polling: il più semplice e il più dispendioso

Lo short polling consiste nell'invio da parte del client di una richiesta HTTP a intervalli fissi, ad esempio ogni 5 secondi: "Ci sono aggiornamenti?". Il server risponde immediatamente con i dati correnti. È l'implementazione più semplice, ma anche la più dispendiosa: il client effettua molte richieste quando non c'è nulla di nuovo. È adatto solo a dati che cambiano molto lentamente.

Long polling: il server mantiene aperta la risposta

Il long polling migliora lo short polling: il client invia una richiesta e il server mantiene aperta la connessione finché non sono disponibili nuovi dati. Quando arrivano nuovi dati, il server risponde e il client invia immediatamente un'altra richiesta. Questo riduce le risposte non necessarie, ma comporta comunque un overhead maggiore rispetto a SSE, perché ogni risposta richiede la configurazione di una nuova connessione TCP.

Vantaggi di SSE

SSE offre diversi vantaggi pratici rispetto a WebSockets per il push dal server al client: funziona tramite HTTP normale, senza aggiornamento del protocollo, quindi attraversa proxy aziendali e bilanciatori di carico senza configurazioni speciali. EventSource include la riconnessione automatica. Il protocollo basato su testo è facile da eseguire il debug nella scheda Rete del browser.

Limitazioni di SSE

SSE presenta limitazioni reali: gestisce solo testo, quindi i dati binari devono essere codificati in base64; è unidirezionale, quindi il client non può inviare dati al server; inoltre, HTTP/1.1 limita a 6 il numero di connessioni EventSource simultanee per dominio. HTTP/2 esegue il multiplexing su un'unica connessione, eliminando questo limite. Per la comunicazione bidirezionale, SSE richiede chiamate REST complementari.

Casi d'uso di SSE

SSE è ideale per dashboard che mostrano metriche in tempo reale, feed di notifiche che inviano nuovi avvisi, barre di avanzamento per processi server di lunga durata, feed di social media in tempo reale, ticker dei prezzi azionari e interfacce di chat in cui i messaggi fluiscono solo dal server al client; i messaggi vengono inviati separatamente tramite POST. Si tratta di scenari in cui è il server ad avviare gli aggiornamenti.

Casi d'uso di WebSocket

WebSockets è necessario quando occorre una comunicazione bidirezionale a bassa latenza: chat in tempo reale in cui i messaggi viaggiano in entrambe le direzioni attraverso un'unica connessione, modifica collaborativa in stile Google Docs, giochi multiplayer in cui le azioni del client e gli aggiornamenti del server avvengono rapidamente, aste in tempo reale e piattaforme di trading. La bidirezionalità giustifica la maggiore complessità.

HTTP/2 e SSE

HTTP/2 migliora significativamente la praticità di SSE. Il multiplexing delle connessioni fa sì che tutti i flussi SSE di un dominio condividano un'unica connessione TCP, eliminando il limite di connessioni per dominio. Se il server supporta HTTP/2, SSE diventa ancora più pratico per le dashboard con più flussi di dati simultanei.

Scelta della tecnologia più adatta

Criteri di scelta: se è necessaria una comunicazione bidirezionale a bassa latenza → WebSockets. Se il server invia aggiornamenti e il client si limita a leggerli → SSE. Se sono necessari aggiornamenti occasionali e la semplicità è importante → polling. Se l'API del server esiste già e non è possibile aggiungere SSE → polling. Inizi dalla soluzione più semplice che soddisfa i requisiti di latenza.

Confronto dell'overhead dei protocolli

La suddivisione in frame di WebSocket aggiunge da 2 a 14 byte per messaggio dopo l'handshake iniziale. SSE aggiunge le intestazioni HTTP una sola volta per connessione, quindi trasmette testo delimitato da caratteri di nuova riga. Lo short polling include le intestazioni complete della richiesta e della risposta HTTP a ogni interrogazione. Per i dati ad alta frequenza, WebSockets è la soluzione con l'overhead minore. Per il push dal server poco frequente, SSE è più semplice e offre un overhead accettabile.

Direzionalità di SSE e WebSocket

Qual è la differenza fondamentale nella direzionalità tra SSE e WebSockets?

Riepilogo della lezione: confronto delle tecnologie in tempo reale

WebSockets: connessione TCP persistente e bidirezionale, per chat, giochi e modifica collaborativa. SSE: push HTTP unidirezionale dal server al client tramite l'API EventSource, per notifiche, dashboard e feed. Short polling: richieste a intervalli fissi, la soluzione più semplice ma più dispendiosa. Long polling: il server mantiene aperta la risposta finché non sono disponibili dati, con meno richieste ma maggiore latenza. Vantaggi di SSE: funziona attraverso i proxy e offre la riconnessione automatica. Limitazioni di SSE: solo testo, unidirezionale e con limiti di connessione in HTTP/1.1.

Domande Frequenti

La lezione «Confronto tra SSE, WebSocket e polling» è gratuita?

Sì — il testo completo di «Confronto tra SSE, WebSocket e polling» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Confronto tra SSE, WebSocket e polling»?

Confrontare SSE (push unidirezionale), WebSocket (bidirezionale) e polling in base all'adeguatezza e alla complessità del caso d'uso Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Confronto tra SSE, WebSocket e polling»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Confronto tra SSE, WebSocket e polling
  2. Consumare stream SSE in React con EventSource
  3. Pattern di Long Polling e logica di riconnessione
  4. Creazione di un feed di notifiche in tempo reale
← Torna a React Academy