Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 4163|Atsakyti: 4

[.NET branduolys] SSE (1) naudoja ASP.NET Core kaip SSE serverį

[Kopijuoti nuorodą]
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, palyginimas
Kitą:JS klausosi ctrl + enter klavišų kombinacijos
 Savininkas| Publikuota: 2024-4-5 12:03:28 |
Numatytoji naršyklės "EventSource" API nustato tam tikrus apribojimus leidžiamų pateikti užklausų tipams: vieninteliai parametrų URL, kuriuos leidžiama perduoti, yra ir withCredentials, todėl:

Negalite perduoti užklausos turinio: turite užkoduoti visą užklausai vykdyti reikalingą informaciją URL, kuris daugumoje naršyklių ribojamas iki 2000 simbolių.
Negalite perduoti pasirinktinių užklausų antraščių
Galite pateikti tik GET užklausą - negalima nurodyti jokio kito būdo.
Jei ryšys nutrūksta, negalite kontroliuoti pakartotinių bandymų politikos: naršyklė kelis kartus tyliai pakartoja ir sustoja, o to nepakanka bet kokio tipo patikimai programai.


gauti įvykio šaltinį

Biblioteka pateikia alternatyvią sąsają, pagrįstą Fetch API, skirtą serverio siunčiamiems įvykiams naudoti. Jis visiškai suderinamas su įvykių srauto formatu, todėl jei jau turite serverį, kuris skleidžia šiuos įvykius, galite jį naudoti kaip anksčiau. Tačiau dabar galite geriau valdyti užklausas ir atsakymus

Hipersaito prisijungimas matomas.
Publikuota 2024-11-14 14:34:25 |
Sužinojau
 Savininkas| Publikuota: 2024-12-25 16:36:44 |
Smulkus šlakas Publikuota: 2024-4-5 12:03
Numatytoji naršyklės "EventSource" API nustato tam tikrus leistinų užklausų tipų apribojimus: vienintelis parametro URL, kurį leidžiama perduoti, yra withCredentia ...

Kompiliuokite NPM paketą į naršyklei paruoštą JavaScript scenarijų
https://www.itsvse.com/thread-10762-1-1.html
 Savininkas| Publikuota: 2024-12-25 16:48:45 |
SSE (2) įvykio šaltinio pakartotinio prisijungimo problema perjungus naršyklės skirtukus
https://www.itsvse.com/thread-10906-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com