Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 4163|Svare: 4

[.NET Core] SSE (1) bruker ASP.NET Core som SSE-server

[Kopier lenke]
Publisert 2024-4-5 11:54:12 | | | |
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.




Foregående:En enkel sammenligning av Garnet cache og Redis utviklet med .NET
Neste:JS lytter etter ctrl + enter-tastkombinasjonen
 Vert| Publisert 2024-4-5 12:03:28 |
Standard nettleserens EventSource API pålegger noen begrensninger på hvilke typer forespørsler som kan foreslås: de eneste parameter-URL-ene som får sendes inn er og withCredentials, derfor:

Du kan ikke sende inn forespørselskroppen: Du må kode all informasjon som trengs for å utføre forespørselen i URL-en, som er begrenset til 2000 tegn i de fleste nettlesere.
Du kan ikke sende inn tilpassede forespørselsheadere
Du kan bare gjøre en GET-forespørsel – ingen annen metode kan spesifiseres.
Hvis forbindelsen kuttes, har du ingen kontroll over retry-policyen: nettleseren prøver stille for deg noen ganger og stopper deretter, noe som ikke er godt nok for noen type robust applikasjon.


fetch-event-source

Biblioteket tilbyr et alternativt grensesnitt basert på Fetch API for bruk av serversendte hendelser. Den er fullt kompatibel med hendelsesstrømformatet, så hvis du allerede har en server som sender ut disse hendelsene, kan du bruke den som før. Men nå har du mer kontroll over forespørsler og svar

Innloggingen med hyperkoblingen er synlig.
Publisert 2024-11-14 14:34:25 |
lærd
 Vert| Publisert 2024-12-25 16:36:44 |
Liten slagg Publisert 2024-4-5 12:03
Standard nettleserens EventSource API pålegger noen begrensninger på hvilke typer forespørsler som er tillatt: den eneste parameter-url-en som får lov til å sendes inn er withCredentia ...

Kompil NPM-pakken til et nettleserklart JavaScript-skript
https://www.itsvse.com/thread-10762-1-1.html
 Vert| Publisert 2024-12-25 16:48:45 |
SSE (2) fetch-event-source retilkoblingsproblem etter bytte av nettleserfaner
https://www.itsvse.com/thread-10906-1-1.html
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com