SSE vs WebSocket: scegli lo stream giusto

SSE vs WebSocket

SSE vs WebSocket: quale opzione real-time usare | We.Inc

Server-sent events vs WebSocket: EventSource e WebSocket a confronto, riconnessione, dati binari, limiti di connessione, un aiuto alla scelta e server Node minimi per entrambi.

I server-sent events inviano in streaming testo dal server al browser tramite una normale risposta HTTP, e l'API EventSource si riconnette da sola. Un WebSocket trasforma la connessione in un canale bidirezionale che trasporta testo o dati binari in entrambe le direzioni. Usa SSE per feed, notifiche e avanzamento; usa i WebSocket quando il browser deve inviare spesso messaggi di ritorno.

Fianco a fianco

Non sai quale dei due serve alla tua funzionalità? Spunta le affermazioni vere per il tuo caso nell'aiuto qui sotto. Applica le stesse regole della tabella qui sopra e ti dice quale API è adatta e perché.

Domande frequenti

Con SSE il browser può inviare dati al server?

Non sullo stream stesso. Lo stream di eventi va solo dal server al client, quindi il browser invia i suoi messaggi con normali richieste fetch. Per un traffico in stile chat in entrambe le direzioni, un WebSocket è la soluzione più pulita.

Come impedisco a EventSource di riconnettersi?

Chiama close() sul client. Dal lato server, lo standard HTML stabilisce che una risposta 204 No Content dice al client di smettere di riconnettersi.

Posso inviare un header Authorization con EventSource?

No. Il costruttore accetta solo un URL e un oggetto di opzioni la cui unica impostazione è withCredentials. Usa un cookie, un token di breve durata nell'URL oppure un lettore basato su fetch se ti servono header personalizzati.

SSE è superato ora che esistono i WebSocket?

No. Il formato text/event-stream resta una buona scelta per i feed unidirezionali perché passa attraverso normali server HTTP, proxy e autenticazione senza alcun cambio di protocollo.

Quale dei due usa meno risorse del server?

Entrambi mantengono una connessione di lunga durata per client, quindi la differenza è piccola. Conta di più se il tuo hosting consente in generale risposte di lunga durata o upgrade di protocollo, quindi controlla prima i suoi limiti sulla durata delle richieste.

Come funzionano i server-sent events

Come funzionano i WebSocket

Una regola rapida

Server-sent events: codice minimo

Server SSE in Node puro

Non serve nessuna libreria. La risposta resta aperta; ogni scrittura è un evento, e la riga di commento impedisce ai proxy inattivi di chiuderla.

EventSource nel browser

addEventListener usa il nome dell'evento dello stream. La riconnessione avviene senza alcun codice da parte tua.

WebSocket: codice minimo

Server WebSocket con il pacchetto ws

Installalo con npm install ws. Questo esempio rimanda ogni messaggio in maiuscolo al client che lo ha inviato.

WebSocket nel browser, con una semplice riconnessione

A differenza di EventSource, niente si riconnette per te, quindi questo codice attende un momento dopo la chiusura e apre un nuovo socket.

Il browser invia molti messaggi di ritorno, diversi al secondo o più

I dati sono binari, come blocchi audio o buffer dello stato di gioco

I client devono recuperare gli eventi persi dopo una connessione caduta

Il traffico passa attraverso proxy o hosting che gestiscono solo HTTP semplice

I server-sent events sono adatti. Nulla di ciò che hai spuntato richiede un canale bidirezionale, ed EventSource ti offre gratis riconnessione e ripresa.

Un WebSocket è adatto. Ti servono messaggi frequenti dal browser o dati binari, che uno stream di eventi non può trasportare.

Quale si adatta alla tua funzionalità?

Spunta ciò che è vero per la tua funzionalità

Raccomandazione

Server-sent events

WebSocket

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito