|
|
Paskelbta 2024-4-5 11:54:12
|
|
|
|

SSE įvadas
SSE reiškia serverio išsiųstus įvykius, o tai pažodžiui reiškia, kad serveris siunčia informaciją klientui. SSE yra vienpusis kanalas,Serveris gali siųsti informaciją tik klientuiKlientas gali gauti SSE užklausą tik suaktyvinęs pirmą kartą ir negali atsakyti.
Pagrindinės SSE savybės:
- Naudojimo paprastumas: SSE naudoja tekstinius duomenų formatus, tokius kaip paprastas tekstas, JSON ir kt., todėl gana paprasta siųsti ir analizuoti duomenis.
- Vienpusis ryšys: SSE palaiko vienpusį ryšį tarp serverio ir kliento, kai serveris gali aktyviai perduoti duomenis klientui, o klientas gali gauti tik duomenis.
- Realiuoju laiku: SSE užmezga ilgalaikius ryšius, leidžiančius serveriams siųsti duomenis klientams realiuoju laiku be dažnų užklausų.
SSE ir "WebSocket"
"WebSocket" yra dar viena žiniatinklio technologija, naudojama dvipusiam ryšiui realiuoju laiku įgalinti, kuri kai kuriais atžvilgiais skiriasi nuo SSE. Štai SSE ir WebSocket palyginimas:
- Duomenų siuntimo kryptis: SSE yra vienpusis ryšys tarp serverio ir kliento, o serveris gali aktyviai perduoti duomenis klientui. Kita vertus, "WebSocket" yra dvikryptis ryšys, leidžiantis realiuoju laiku keistis dvipusiais duomenimis tarp serverio ir kliento.
- Ryšio užmezgimas: SSE naudoja ilgus HTTP pagrįstus ryšius, kad užmegztų ryšius per įprastas HTTP užklausas ir atsakymus, taip realiuoju laiku perduodant duomenis. "WebSockets" naudoja pasirinktinius protokolus, kad įgalintų dvipusį ryšį užmezgant "WebSocket" ryšius.
- Suderinamumas: Kadangi SSE yra pagrįstas HTTP protokolu, jis gali būti naudojamas daugumoje šiuolaikinių naršyklių ir nereikalauja papildomų protokolo atnaujinimų. "WebSockets" taip pat palaikomi daugumoje šiuolaikinių naršyklių, tačiau kai kuriose specialiose tinklo aplinkose jie gali būti problematiški.
- Taikomi scenarijai: SSE tinka scenarijams, kai serveris siunčia duomenis klientui realiuoju laiku, pvz., akcijų kainų atnaujinimai, naujienų siuntimas realiuoju laiku ir kt. "WebSocket" tinka scenarijams, kuriems reikalingas dvipusis ryšys realiuoju laiku, pvz., pokalbių programoms ir kelių asmenų bendradarbiavimo redagavimui.
- Priklausomai nuo jūsų konkrečių verslo poreikių ir scenarijų, SSE arba WebSocket pasirinkimas priklauso nuo jūsų faktinių poreikių. Jei jums reikia tik serverio, kad duomenys klientams būtų perduodami viena kryptimi, ir norite, kad jie būtų paprasti ir suderinami, SSE yra geras pasirinkimas. Jei jums reikia dvipusio ryšio arba jei jums reikia pažangesnių funkcijų ir valdymo, "WebSocket" gali geriau atitikti jūsų poreikius.
SSE įvykių srauto formatas
Įvykių srautas yra paprastas tekstinių duomenų srautas, kuris turėtų būti užkoduotas UTF-8 formatu. Renginio srautasPranešimas atskirtas pora eilučių lūžių。 Elgsenos komentarų eilutės, prasidedančios dvitaškiu, nepaisoma. Kiekvienas laukas žymimas lauko pavadinimu, po kurio eina dvitaškis, o tada to lauko reikšmės tekstiniai duomenys.
Laukai yra šie:
įvykis: eilutė, naudojama įvykio tipui identifikuoti. Jei ši eilutė nurodyta, naršyklė atitinkamam klausytojui siunčia įvykį su nurodytu įvykio pavadinimu; Klientas turėtų naudoti addEventListener(), kad klausytųsi nurodyto įvykio. Jei pranešime nenurodytas įvykio pavadinimas, galima iškviesti pranešimo apdorojimo programą.
duomenys: pranešimo duomenų laukas. Kai EventSource gauna kelias eilutes iš eilės, prasidedančias data:, jis jas sujungia, įterpdamas eilutės lūžį tarp jų. Eilutės lūžis pabaigoje pašalinamas.
Id: įvykio ID, kuris tampa dabartinio EventSource objekto vidinės ypatybės "Paskutinio įvykio ID" ypatybės reikšme.
Kartoti: laikas vėl prisijungti. Jei ryšys su serveriu nutrūksta, naršyklė palauks nurodyto laiko ir bandys prisijungti iš naujo. Tai turi būti sveikasis skaičius, nurodantis prisijungimo laiką milisekundėmis. Jei nurodyta ne sveikasis skaičius, lauko nepaisoma.
EventSource egzempliorius
"EventSource" sąsaja yra sąsaja tarp žiniatinklio turinio ir serverio, skirta įvykiams siųsti.
Ypatybė EventHandler
EventSource.onopen iškviečiamas, kai ryšys atidarytas. EventSource.onmessage iškviečiamas, kai pranešimas gaunamas be įvykio atributo. EventSource.onerror iškviečiamas ryšio išimtims.
SSE serveris (ASP.NET branduolys)
Sukurkite naują ASP.NET Core projektą naudodami .NET 8 ir valdiklio kodas yra toks:
Klientui, kuris užmezga ryšį, kas antrą intervalą siųskite pranešimą klientui.
SSE klientas
Parašykite kliento kodą peržiūros puslapyje naudodami html ir js taip:
Pradėkite projektą su šiais efektais:
Nuoroda:
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas. |
Ankstesnis:Paprastas "Garnet" talpyklos ir "Redis", sukurtos naudojant .NET, palyginimasKitą:JS klausosi ctrl + enter klavišų kombinacijos
|