SSE-introduksjon
SSE står for Server-Sent Events, som bokstavelig talt betyr at serveren sender informasjon til klienten. SSE er en enveiskanal,Serveren kan kun sende informasjon til klientenKlienten kan bare motta SSE-forespørselen etter å ha trigget første gang, og kan ikke svare.
Nøkkelfunksjoner ved SSE inkluderer:
- Brukervennlighet: SSE bruker tekstbaserte dataformater som ren tekst, JSON osv., noe som gjør det relativt enkelt å sende og analysere data.
- Enveiskommunikasjon: SSE støtter enveiskommunikasjon mellom serveren og klienten, hvor serveren aktivt kan sende data til klienten, mens klienten kun kan motta dataene.
- Sanntid: SSE etablerer langsiktige forbindelser, slik at servere kan sende data til klienter i sanntid uten hyppige forespørsler.
SSE vs. WebSocket
WebSocket er en annen webteknologi som brukes for å muliggjøre sanntids toveis kommunikasjon, som skiller seg fra SSE på noen måter. Her er en sammenligning mellom SSE og WebSocket:
- Datapush-retning: SSE er en enveiskommunikasjon mellom serveren og klienten, og serveren kan aktivt sende data til klienten. WebSocket, derimot, er toveis kommunikasjon, som tillater sanntids toveis datautveksling mellom serveren og klienten.
- Tilkoblingsetablering: SSE bruker lange HTTP-baserte forbindelser for å etablere forbindelser gjennom vanlige HTTP-forespørsler og svar, og dermed sanntids datapush. WebSockets bruker tilpassede protokoller for å muliggjøre toveis kommunikasjon ved å etablere WebSocket-tilkoblinger.
- Kompatibilitet: Siden SSE er basert på HTTP-protokollen, kan det brukes i de fleste moderne nettlesere og krever ikke ytterligere protokolloppgraderinger. WebSockets støttes også i det store flertallet av moderne nettlesere, men de kan være problematiske i noen spesielle nettverksmiljøer.
- Relevante scenarioer: SSE er egnet for situasjoner der serveren sender data til klienten i sanntid, som aksjekursoppdateringer, nyheter i sanntid, osv. WebSocket er egnet for situasjoner som krever sanntids toveis kommunikasjon, som chat-applikasjoner og flerpersoners samarbeidsredigering.
- Avhengig av dine spesifikke forretningsbehov og scenarioer, avhenger valget av SSE eller WebSocket av dine faktiske behov. Hvis du bare trenger en server for å sende data til klienter i én retning og vil holde det enkelt og kompatibelt, er SSE et godt valg. Hvis du trenger toveis kommunikasjon, eller hvis du trenger mer avanserte funksjoner og kontroll, kan WebSocket passe bedre for dine behov.
SSE-arrangementsstrømformat
En hendelsesstrøm er en enkel strøm av tekstdata som skal kodes i UTF-8-format. HendelsesstrømMeldingen er adskilt av et par linjeskift。 Atferdskommentarlinjer som starter med kolon ignoreres. Hvert felt representeres av et feltnavn, etterfulgt av et kolon, og deretter tekstdata for det feltets verdi.
Feltene er som følger:
begivenhet: En streng brukt til å identifisere hendelsestypen. Hvis denne strengen er spesifisert, sender nettleseren en hendelse med det angitte hendelsesnavnet til den aktuelle lytteren; Klienten bør bruke addEventListener() for å lytte etter den angitte hendelsen. Hvis en melding ikke spesifiserer et hendelsesnavn, kan onmessage-handleren kalles opp.
data: Datafeltet til meldingen. Når EventSource mottar flere påfølgende linjer som starter med data:, kobler den dem sammen og setter inn et linjeskift mellom dem. Linjeskiftet på slutten er fjernet.
Id: Event ID, som blir egenskapsverdien til det nåværende EventSource-objektets interne egenskap "Last Event ID".
Prøve: tiden for å gjenopprette kontakten. Hvis tilkoblingen til serveren mistes, vil nettleseren vente i den angitte tiden og deretter prøve å koble til igjen. Dette må være et heltall som spesifiserer tiden for å koble sammen igjen i millisekunder. Hvis en ikke-heltallsverdi er spesifisert, ignoreres feltet.
EventSource-instans
EventSource-grensesnittet er grensesnittet mellom webinnholdet og serveren for å sende hendelser.
EventHandler-egenskapen
EventSource.onopen kalles når tilkoblingen er åpen. EventSource.onmessage kalles når en melding mottas uten et hendelsesattributt. EventSource.onerror kalles på tilkoblingsunntak.
SSE Server (ASP.NET Core)
Opprett et nytt ASP.NET Core-prosjekt med .NET 8, og kontrollerkoden er som følger:
For klienten som etablerer koblingen, send en melding til klienten annethvert intervall.
SSE-klient
Skriv klientkode på View-siden ved hjelp av html og js som følger:
Start prosjektet med følgende effekter:
Referanse:
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig. |