Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 4163|Atbildi: 4

[.NET kodols] SSE (1) izmanto ASP.NET Core kā SSE serveri

[Kopēt saiti]
Publicēts 2024-4-5 11:54:12 | | | |
SSE ievads

SSE apzīmē servera nosūtītos notikumus, kas burtiski nozīmē, ka serveris nosūta informāciju klientam. SSE ir vienvirziena kanāls,Serveris var nosūtīt informāciju tikai klientamKlients var saņemt SSE pieprasījumu tikai pēc pirmās aktivizēšanas reizes un nevar atbildēt.



SSE galvenās iezīmes ietver:

  • Lietošanas ērtums: SSE izmanto teksta datu formātus, piemēram, vienkāršu tekstu, JSON utt., padarot salīdzinoši vienkāršu datu nosūtīšanu un parsēšanu.
  • Vienvirziena saziņa: SSE atbalsta vienvirziena saziņu starp serveri un klientu, kur serveris var aktīvi virzīt datus klientam, bet klients var saņemt tikai datus.
  • Reāllaiks: SSE izveido ilgtermiņa savienojumus, ļaujot serveriem nosūtīt datus klientiem reāllaikā bez biežiem pieprasījumiem.


SSE salīdzinājumā ar WebSocket

WebSocket ir vēl viena tīmekļa tehnoloģija, ko izmanto, lai iespējotu reāllaika divvirzienu saziņu, kas savā ziņā atšķiras no SSE. Šeit ir salīdzinājums starp SSE un WebSocket:

  • Datu virzīšanas virziens: SSE ir vienvirziena saziņa starp serveri un klientu, un serveris var aktīvi virzīt datus klientam. WebSocket, no otras puses, ir divvirzienu komunikācija, kas ļauj reāllaikā divvirzienu datu apmaiņu starp serveri un klientu.
  • Savienojuma izveide: SSE izmanto garus HTTP savienojumus, lai izveidotu savienojumus, izmantojot parastos HTTP pieprasījumus un atbildes, tādējādi reāllaika datu virzīšanu. WebSockets izmanto pielāgotus protokolus, lai iespējotu divvirzienu sakarus, izveidojot WebSocket savienojumus.
  • Saderība: Tā kā SSE ir balstīts uz HTTP protokolu, to var izmantot lielākajā daļā mūsdienu pārlūkprogrammu un tam nav nepieciešami papildu protokola jauninājumi. WebSockets tiek atbalstīti arī lielākajā daļā mūsdienu pārlūkprogrammu, taču dažās īpašās tīkla vidēs tās var būt problemātiskas.
  • Piemērojamie scenāriji: SSE ir piemērots scenārijiem, kad serveris reāllaikā nosūta datus klientam, piemēram, akciju cenu atjauninājumi, ziņu reāllaika virzīšana utt. WebSocket ir piemērots scenārijiem, kuros nepieciešama reāllaika divvirzienu saziņa, piemēram, tērzēšanas lietojumprogrammas un vairāku personu sadarbības rediģēšana.
  • Atkarībā no jūsu konkrētajām biznesa vajadzībām un scenārijiem, SSE vai WebSocket izvēle ir atkarīga no jūsu faktiskajām vajadzībām. Ja jums ir nepieciešams tikai serveris, lai virzītu datus klientiem vienā virzienā, un vēlaties, lai tie būtu vienkārši un saderīgi, SSE ir laba izvēle. Ja jums ir nepieciešams panākt divvirzienu saziņu vai ja jums ir nepieciešamas uzlabotas funkcijas un vadība, tad WebSocket var būt labāk piemērots jūsu vajadzībām.


SSE notikumu straumes formāts

Notikumu straume ir vienkārša teksta datu plūsma, kas jākodē UTF-8 formātā. Notikumu straumeZiņojumu atdala rindiņu pārtraukumu pāris。 Uzvedības komentāru rindiņas, kas sākas ar kolu, tiek ignorētas. Katrs lauks tiek attēlots ar lauka nosaukumu, kam seko kols un pēc tam teksta dati par šī lauka vērtību.

Lauki ir šādi:

notikums: virkne, ko izmanto, lai identificētu notikuma tipu. Ja šī virkne ir norādīta, pārlūkprogramma nosūta notikumu ar norādīto notikuma nosaukumu atbilstošajam klausītājam; Klientam jāizmanto addEventListener(), lai klausītos norādīto notikumu. Ja ziņojumā nav norādīts notikuma nosaukums, var izsaukt onmessage apdarinātāju.
dati: ziņojuma datu lauks. Kad EventSource saņem vairākas secīgas rindiņas, kas sākas ar data:, tas tās savieno, ievietojot rindiņas pārtraukumu starp tām. Rindiņas pārtraukums beigās tiek noņemts.
Id: notikuma ID, kas kļūst par pašreizējā EventSource objekta iekšējā rekvizīta "Pēdējā notikuma ID" īpašuma vērtību.
Mēģināt vēlreiz: laiks atjaunot savienojumu. Ja savienojums ar serveri tiek zaudēts, pārlūkprogramma gaidīs norādīto laiku un pēc tam mēģinās atkārtoti izveidot savienojumu. Tam jābūt veselam skaitlim, kas norāda atkārtota savienojuma izveides laiku milisekundēs. Ja ir norādīta vērtība, kas nav vesels skaitlis, lauks tiek ignorēts.


EventSource instance

EventSource interfeiss ir interfeiss starp tīmekļa saturu un serveri, lai nosūtītu notikumus.

Rekvizīts EventHandler

EventSource.onopen tiek izsaukts, kad savienojums ir atvērts.
EventSource.onmessage tiek izsaukts, ja ziņojums tiek saņemts bez notikuma atribūta.
EventSource.onerror tiek izsaukts savienojuma izņēmumiem.

SSE serveris (ASP.NET kodols)

Izveidojiet jaunu ASP.NET Core projektu, izmantojot .NET 8, un kontrollera kods ir šāds:


Klientam, kas izveido saiti, nosūtiet klientam ziņojumu ik pēc otrā intervāla.


SSE klients

Rakstiet klienta kodu skata lapā, izmantojot html un js šādi:


Sāciet projektu ar šādiem efektiem:



Atsauce:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.




Iepriekšējo:Vienkāršs granāta kešatmiņas un Redis salīdzinājums, kas izstrādāts ar .NET
Nākamo:JS klausās taustiņu kombināciju ctrl + enter
 Saimnieks| Publicēts 2024-4-5 12:03:28 |
Noklusējuma pārlūkprogrammas EventSource API nosaka dažus ierobežojumus atļauto pieprasījumu veidiem: vienīgie parametru URL, kurus atļauts nodot, ir un withCredentials, tādēļ:

Jūs nevarat nodot pieprasījuma pamattekstu: Jums ir jākodē visa informācija, kas nepieciešama, lai izpildītu pieprasījumu, URL, kas lielākajā daļā pārlūkprogrammu ir ierobežots līdz 2000 rakstzīmēm.
Jūs nevarat nodot pielāgotas pieprasījumu galvenes
Jūs varat veikt tikai GET pieprasījumu - nevar norādīt citu metodi.
Ja savienojums ir pārtraukts, jums nav kontroles pār atkārtotu mēģinājumu politiku: pārlūkprogramma klusi atkārto dažas reizes un pēc tam apstājas, kas nav pietiekami labi jebkura veida spēcīgai lietojumprogrammai.


atnest-notikuma avots

Bibliotēka nodrošina alternatīvu interfeisu, kas balstīts uz Fetch API, lai izmantotu servera nosūtītos notikumus. Tas ir pilnībā saderīgs ar notikumu plūsmas formātu, tāpēc, ja jums jau ir serveris, kas izstaro šos notikumus, varat to izmantot kā iepriekš. Tomēr tagad jums ir lielāka kontrole pār pieprasījumiem un atbildēm

Hipersaites pieteikšanās ir redzama.
Publicēts 2024-11-14 14:34:25 |
Uzzināju
 Saimnieks| Publicēts 2024-12-25 16:36:44 |
Mazie sārņi Publicēts 2024-4-5 12:03
Noklusējuma pārlūkprogrammas EventSource API nosaka dažus ierobežojumus atļauto pieprasījumu veidiem: vienīgais parametra URL, ko atļauts nodot, ir withCredentia ...

Kompilējiet NPM pakotni pārlūkprogrammai gatavā JavaScript skriptā
https://www.itsvse.com/thread-10762-1-1.html
 Saimnieks| Publicēts 2024-12-25 16:48:45 |
SSE (2) atgūšanas notikuma avota atkārtota savienojuma problēma pēc pārlūkprogrammas cilņu pārslēgšanas
https://www.itsvse.com/thread-10906-1-1.html
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com