SSE Introduktion
SSE står for Server-Sendte Events, hvilket bogstaveligt talt betyder, at serveren sender information til klienten. SSE er en envejskanal,Serveren kan kun sende information til klientenKlienten kan kun modtage SSE-anmodningen efter første gang og kan ikke svare.
Nøglefunktioner i SSE inkluderer:
- Brugervenlighed: SSE bruger tekstbaserede dataformater som almindelig tekst, JSON osv., hvilket gør det relativt nemt at sende og parse data.
- Envejskommunikation: SSE understøtter envejskommunikation mellem serveren og klienten, hvor serveren aktivt kan sende data til klienten, mens klienten kun kan modtage dataene.
- Realtid: SSE etablerer langvarige forbindelser, hvilket gør det muligt for servere at sende data til klienterne i realtid uden hyppige forespørgsler.
SSE vs. WebSocket
WebSocket er en anden webteknologi, der bruges til at muliggøre realtids tovejskommunikation, som adskiller sig fra SSE på nogle måder. Her er en sammenligning mellem SSE og WebSocket:
- Data-skubberetning: SSE er en envejskommunikation mellem serveren og klienten, og serveren kan aktivt sende data til klienten. WebSocket er derimod tovejskommunikation, der muliggør realtids tovejs dataudveksling mellem serveren og klienten.
- Forbindelsesetablering: SSE bruger lange HTTP-baserede forbindelser til at etablere forbindelser gennem almindelige HTTP-anmodninger og svar, hvilket dermed giver realtidsdatapush. WebSockets bruger brugerdefinerede protokoller til at muliggøre tovejskommunikation ved at etablere WebSocket-forbindelser.
- Kompatibilitet: Da SSE er baseret på HTTP-protokollen, kan det bruges i de fleste moderne browsere og kræver ikke yderligere protokolopgraderinger. WebSockets understøttes også i langt de fleste moderne browsere, men de kan være problematiske i nogle særlige netværksmiljøer.
- Relevante scenarier: SSE er velegnet til scenarier, hvor serveren sender data til klienten i realtid, såsom aktiekursopdateringer, nyhedsudsendelser i realtid osv. WebSocket er velegnet til scenarier, der kræver realtids tovejskommunikation, såsom chatapplikationer og flerpersoners samarbejdende redigering.
- Afhængigt af dine specifikke forretningsbehov og scenarier afhænger valget af SSE eller WebSocket af dine faktiske behov. Hvis du kun har brug for en server til at sende data til klienterne i én retning og vil holde det enkelt og kompatibelt, er SSE et godt valg. Hvis du har brug for tovejskommunikation, eller hvis du har brug for mere avancerede funktioner og kontrol, kan WebSocket være et bedre match for dine behov.
SSE event stream-format
En hændelsesstrøm er en simpel strøm af tekstdata, som skal kodes i UTF-8-format. BegivenhedsstrømBeskeden adskilles af et par linjeskift。 Adfærdskommentarlinjer, der starter med en kolon, ignoreres. Hvert felt repræsenteres af et feltnavn, efterfulgt af et kolon, og derefter tekstdata for det felts værdi.
Markerne er som følger:
hændelse: En streng, der bruges til at identificere hændelsestypen. Hvis denne streng er specificeret, sender browseren en begivenhed med det angivne begivenhedsnavn til den relevante lytter; Klienten bør bruge addEventListener() til at lytte efter den angivne begivenhed. Hvis en besked ikke angiver et hændelsesnavn, kan onmessage-håndtereren kaldes.
data: Datafeltet i beskeden. Når EventSource modtager flere på hinanden følgende linjer, der starter med data:, sammenkæder den dem og indsætter et linjeskift mellem dem. Linjeskiftet til sidst er fjernet.
id: Event ID, som bliver egenskabsværdien for det nuværende EventSource-objekts interne egenskab "Last Event ID".
Prøv: tiden til at genoprette forbindelsen. Hvis forbindelsen til serveren mistes, vil browseren vente i den angivne tid og derefter forsøge at genoprette forbindelsen. Dette skal være et heltal, der angiver tidspunktet for genforbindelse i millisekunder. Hvis en ikke-heltalsværdi angives, ignoreres feltet.
EventSource-instans
EventSource-grænsefladen er grænsefladen mellem webindholdet og serveren til at sende events.
EventHandler-egenskaben
EventSource.onopen kaldes, når forbindelsen er åben. EventSource.onmessage kaldes, når en besked modtages uden et event-attribut. EventSource.onerror kaldes ved forbindelsesundtagelser.
SSE Server (ASP.NET Core)
Opret et nyt ASP.NET Core-projekt med .NET 8, og controllerkoden er som følger:
For klienten, der etablerer forbindelsen, sendes en besked til klienten hvert andet interval.
SSE-klient
Skriv klientkode på View-siden ved hjælp af html og js som følger:
Start projektet med følgende effekter:
Henvisning:
Hyperlink-login er synlig.
Hyperlink-login er synlig.
Hyperlink-login er synlig. |