Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 4163|Risposta: 4

[.NET Core] SSE (1) utilizza ASP.NET Core come server SSE

[Copiato link]
Pubblicato il 5-4-2024 11:54:12 | | | |
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.




Precedente:Un semplice confronto tra Garnet cache e Redis sviluppato con .NET
Prossimo:JS ascolta la combinazione di tasti ctrl + invio
 Padrone di casa| Pubblicato il 5-4-2024 12:03:28 |
L'API predefinita EventSource del browser impone alcune restrizioni sui tipi di richieste consentite: gli unici URL dei parametri che possono essere passati sono e withCredentials, quindi:

Non puoi passare nel corpo della richiesta: devi codificare tutte le informazioni necessarie per eseguire la richiesta nell'URL, che nella maggior parte dei browser è limitato a 2000 caratteri.
Non puoi passare le intestazioni delle richieste personalizzate
Puoi fare solo una richiesta GET - non si può specificare alcun altro metodo.
Se la connessione viene interrotta, non hai controllo sulla politica di ritento: il browser riprova silenziosamente alcune volte per te e poi si ferma, cosa che non è sufficiente per nessun tipo di applicazione robusta.


fetch-event-source

La libreria fornisce un'interfaccia alternativa basata sull'API Fetch per l'utilizzo di eventi inviati dal server. È completamente compatibile con il formato event stream, quindi se hai già un server che emette questi eventi, puoi usarlo come prima. Tuttavia, ora hai più controllo su richieste e risposte

Il login del link ipertestuale è visibile.
Pubblicato il 14-11-2024 14:34:25 |
istruito
 Padrone di casa| Pubblicato il 25-12-2024 16:36:44 |
Small slag Pubblicato il 5-04-2024 12:03
L'API EventSource del browser predefinita impone alcune restrizioni sui tipi di richieste consentite: l'unico URL del parametro che può essere inviato è withCredentia ...

Compila il pacchetto NPM in uno script JavaScript pronto per browser
https://www.itsvse.com/thread-10762-1-1.html
 Padrone di casa| Pubblicato il 25-12-2024 16:48:45 |
SSE (2) problema di riconnessione fetch-event-source dopo aver cambiato scheda del browser
https://www.itsvse.com/thread-10906-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com