SSE Introduzione
SSE sta per Server-Send Events, che letteralmente significa che il server invia informazioni al client. SSE è un canale unidirezionale,Il server può inviare informazioni solo al clientIl client può ricevere la richiesta SSE solo dopo l'attivazione della prima volta e non può rispondere.
Le caratteristiche principali della SSE includono:
- Facilità d'uso: SSE utilizza formati dati basati su testo come testo semplice, JSON, ecc., rendendo relativamente semplice inviare e analizzare dati.
- Comunicazione unidirezionale: SSE supporta la comunicazione unidirezionale tra server e client, dove il server può attivamente inviare dati al client, mentre il client può solo ricevere i dati.
- Tempo reale: SSE stabilisce connessioni a lungo termine, permettendo ai server di inviare dati ai client in tempo reale senza richieste frequenti.
SSE vs. WebSocket
WebSocket è un'altra tecnologia web utilizzata per abilitare la comunicazione bidirezionale in tempo reale, che differisce da SSE in alcuni aspetti. Ecco un confronto tra SSE e WebSocket:
- Direzione di push dei dati: SSE è una comunicazione unidirezionale tra server e client, e il server può attivamente inviare dati al client. WebSocket, invece, è una comunicazione bidirezionale, permettendo uno scambio di dati bidirezionale in tempo reale tra il server e il client.
- Stabilimento Connessioni: SSE utilizza lunghe connessioni basate su HTTP per stabilire connessioni tramite normali richieste e risposte HTTP, così push dati in tempo reale. I WebSocket utilizzano protocolli personalizzati per consentire la comunicazione bidirezionale stabilendo connessioni WebSocket.
- Compatibilità: Poiché SSE si basa sul protocollo HTTP, può essere utilizzato nella maggior parte dei browser moderni e non richiede ulteriori aggiornamenti del protocollo. I WebSocket sono supportati anche nella stragrande maggioranza dei browser moderni, ma possono essere problematici in alcuni ambienti di rete speciali.
- Scenari applicabili: SSE è adatto a scenari in cui il server invia dati al client in tempo reale, come aggiornamenti sui prezzi delle azioni, news in tempo reale, ecc. WebSocket è adatto a scenari che richiedono comunicazione bidirezionale in tempo reale, come applicazioni di chat e editing collaborativo a più persone.
- A seconda delle esigenze e degli scenari specifici della tua azienda, scegliere SSE o WebSocket dipende dalle tue reali necessità. Se hai bisogno solo di un server per inviare dati ai client in una direzione e vuoi mantenere tutto semplice e compatibile, SSE è una buona scelta. Se hai bisogno di una comunicazione bidirezionale, o se hai bisogno di funzionalità e controllo più avanzati, WebSocket potrebbe essere più adatto alle tue esigenze.
Formato di flusso evento SSE
Un flusso di eventi è un semplice flusso di dati testuali che dovrebbe essere codificato in formato UTF-8. Stream dell'eventoIl messaggio è separato da una coppia di interruzioni di riga。 Le righe di commento comportamentale che iniziano con due punti vengono ignorate. Ogni campo è rappresentato da un nome di campo, seguito da due punti, e poi dai dati di testo per il valore di quel campo.
I campi sono i seguenti:
evento: Una stringa usata per identificare il tipo di evento. Se questa stringa è specificata, il browser invia un evento con il nome specificato all'ascoltatore appropriato; Il client dovrebbe utilizzare addEventListener() per ascoltare l'evento specificato. Se un messaggio non specifica un nome di evento, allora può essere chiamato il gestore onmessage.
dati: Il campo dati del messaggio. Quando l'EventSource riceve più righe consecutive che iniziano con data:, le concatena, inserendo una interruzione di linea tra di esse. La rottura di linea alla fine viene rimossa.
Id: Event ID, che diventa il valore della proprietà interna dell'oggetto EventSource corrente "Last Event ID".
ripetere: il momento per riconnettersi. Se la connessione al server viene persa, il browser aspetterà il tempo specificato e poi cercherà di riconnettersi. Deve essere un intero che specifica il tempo di riconnessione in millisecondi. Se viene specificato un valore non intero, il campo viene ignorato.
Istanza EventSource
L'interfaccia EventSource è l'interfaccia tra il contenuto web e il server per inviare eventi.
Proprietà EventHandler
EventSource.onopen viene chiamato quando la connessione è aperta. EventSource.onmessage viene chiamato quando un messaggio viene ricevuto senza un attributo evento. EventSource.onerror viene chiamato sulle eccezioni di connessione.
SSE Server (ASP.NET Core)
Crea un nuovo progetto ASP.NET Core con .NET 8 e il codice del controller è il seguente:
Per il client che stabilisce il collegamento, inviare un messaggio al client ogni secondo intervallo.
Client SSE
Scrivi il codice client nella pagina View usando html e js come segue:
Inizia il progetto con i seguenti effetti:
Riferimento:
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile. |