Uvod v SSE
SSE pomeni Server-Sent Events, kar dobesedno pomeni, da strežnik pošilja informacije odjemalcu. SSE je enosmerni kanal,Strežnik lahko pošilja informacije le odjemalcuOdjemalec lahko prejme zahtevo SSE šele po prvem sprožitvi in ne more odgovoriti.
Ključne značilnosti SSE vključujejo:
- Enostavnost uporabe: SSE uporablja besedilne podatkovne formate, kot so navadno besedilo, JSON itd., kar omogoča razmeroma enostavno pošiljanje in razčlenjevanje podatkov.
- Enosmerna komunikacija: SSE podpira enosmerno komunikacijo med strežnikom in odjemalcem, kjer lahko strežnik aktivno pošilja podatke odjemalcu, medtem ko odjemalec lahko le prejme podatke.
- V realnem času: SSE vzpostavi dolgoročne povezave, kar strežnikom omogoča, da podatke pošiljajo strankam v realnem času brez pogostih zahtev.
SSE proti WebSocketu
WebSocket je še ena spletna tehnologija, ki omogoča dvosmerno komunikacijo v realnem času in se v nekaterih pogledih razlikuje od SSE. Tukaj je primerjava med SSE in WebSocket:
- Usmerjanje potiska podatkov: SSE je enosmerna komunikacija med strežnikom in odjemalcem, strežnik pa lahko aktivno pošilja podatke odjemalcu. WebSocket pa je dvosmerna komunikacija, ki omogoča dvosmerno izmenjavo podatkov v realnem času med strežnikom in odjemalcem.
- Vzpostavljanje povezav: SSE uporablja dolge HTTP-povezave za vzpostavljanje povezav preko običajnih HTTP zahtevkov in odgovorov, s čimer omogoča prenos podatkov v realnem času. WebSocketi uporabljajo prilagojene protokole za omogočanje dvosmerne komunikacije z vzpostavitvijo WebSocket povezav.
- Združljivost: Ker je SSE osnovan na HTTP protokolu, ga je mogoče uporabljati v večini sodobnih brskalnikov in ne zahteva dodatnih nadgradenj protokola. WebSocketi so podprti tudi v večini sodobnih brskalnikov, vendar so lahko problematični v nekaterih posebnih omrežnih okoljih.
- Primerni scenariji: SSE je primeren za situacije, kjer strežnik v realnem času pošilja podatke odjemalcu, kot so posodobitve cen delnic, novice v realnem času itd. WebSocket je primeren za situacije, ki zahtevajo dvosmerno komunikacijo v realnem času, kot so klepetalne aplikacije in večosebno sodelovalno urejanje.
- Glede na vaše specifične poslovne potrebe in scenarije je izbira SSE ali WebSocket odvisna od vaših dejanskih potreb. Če potrebujete strežnik le za pošiljanje podatkov odjemalcem v eno smer in želite, da je vse preprosto in združljivo, je SSE dobra izbira. Če potrebujete dvosmerno komunikacijo ali naprednejše funkcije in nadzor, je WebSocket morda bolj primeren za vaše potrebe.
Format toka dogodkov SSE
Tok dogodkov je preprost tok besedilnih podatkov, ki ga je treba kodirati v formatu UTF-8. Tok dogodkovSporočilo je ločeno z dvema prelomoma vrstic。 Komentarji o vedenju, ki se začnejo z dvopičjem, se ignorirajo. Vsako polje je predstavljeno z imenom polja, ki mu sledi dvopičje in nato besedilni podatki za vrednost tega polja.
Področja so naslednja:
dogodek: Niz, ki se uporablja za identifikacijo vrste dogodka. Če je ta niz določen, brskalnik pošlje dogodek z navedenim imenom ustreznemu poslušalcu; Odjemalec naj uporabi addEventListener() za poslušanje določenega dogodka. Če sporočilo ne določa imena dogodka, se lahko pokliče onmessage handler.
podatki: Podatkovno polje sporočila. Ko EventSource prejme več zaporednih vrstic, ki se začnejo s podatki:, jih združi in med njimi vstavlja prelom vrstice. Prelom vrstice na koncu je odstranjen.
Id: ID dogodka, ki postane vrednost lastnosti notranje lastnosti trenutnega objekta EventSource z naslovom "Zadnji ID dogodka".
Ponoviti: čas za ponovno povezovanje. Če se povezava s strežnikom izgubi, brskalnik počaka določen čas in nato poskuša ponovno vzpostaviti povezavo. To mora biti celo število, ki določa čas za ponovno povezavo v milisekundah. Če je določena neceloštevilska vrednost, se polje prezre.
Instanca EventSource
Vmesnik EventSource je vmesnik med spletno vsebino in strežnikom za pošiljanje dogodkov.
Lastnost EventHandler
EventSource.onopen se pokliče, ko je povezava odprta. EventSource.onmessage se pokliče, ko je sporočilo sprejeto brez atributa dogodka. EventSource.onerror se pokliče pri izjemah povezave.
SSE Server (ASP.NET jedro)
Ustvarite nov ASP.NET Core projekt z .NET 8 in koda krmilnika je naslednja:
Za odjemalca, ki vzpostavi povezavo, pošljite sporočilo odjemalcu vsakih sekund.
SSE odjemalec
Napišite kodo za odjemalca na strani Pogled z uporabo html in js na naslednji način:
Projekt začnite z naslednjimi učinki:
Referenčni:
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna. |