Úvod do SSE
SSE znamená Server-Sent Events, čo doslova znamená, že server posiela informácie klientovi. SSE je jednosmerný kanál,Server môže klientovi posielať informácie ibaKlient môže prijať SSE požiadavku až po prvom spustení a nemôže odpovedať.
Kľúčové vlastnosti SSE zahŕňajú:
- Jednoduchosť použitia: SSE používa textové dátové formáty, ako je obyčajný text, JSON a podobne, čo uľahčuje odosielanie a spracovanie dát.
- Jednosmerná komunikácia: SSE podporuje jednosmernú komunikáciu medzi serverom a klientom, kde server môže aktívne posielať dáta klientovi, zatiaľ čo klient ich môže len prijímať.
- V reálnom čase: SSE nadväzuje dlhodobé spojenia, ktoré umožňujú serverom posielať dáta klientom v reálnom čase bez častých požiadaviek.
SSE vs. WebSocket
WebSocket je ďalšia webová technológia používaná na umožnenie obojsmernej komunikácie v reálnom čase, ktorá sa v niektorých ohľadoch líši od SSE. Tu je porovnanie medzi SSE a WebSocket:
- Smerovanie posunu dát: SSE je jednosmerná komunikácia medzi serverom a klientom a server môže aktívne posielať dáta klientovi. WebSocket je naopak obojsmerná komunikácia, ktorá umožňuje obojsmernú výmenu dát v reálnom čase medzi serverom a klientom.
- Nadväzovanie spojenia: SSE používa dlhé HTTP pripojenia na nadviazanie spojení prostredníctvom bežných HTTP požiadaviek a odpovedí, čím sa prenáša dáta v reálnom čase. WebSockety používajú vlastné protokoly na umožnenie obojsmernej komunikácie nadväzovaním WebSocket spojení.
- Kompatibilita: Keďže SSE je založené na HTTP protokole, dá sa použiť vo väčšine moderných prehliadačov a nevyžaduje ďalšie aktualizácie protokolu. WebSockety sú podporované aj vo väčšine moderných prehliadačov, no môžu byť problematické v niektorých špeciálnych sieťových prostrediach.
- Použiteľné scenáre: SSE je vhodný pre situácie, keď server posiela dáta klientovi v reálnom čase, ako sú aktualizácie cien akcií, správy v reálnom čase a podobne. WebSocket je vhodný pre situácie, ktoré vyžadujú obojsmernú komunikáciu v reálnom čase, ako sú chatovacie aplikácie a viacčlenná spolupráca pri úpravách.
- V závislosti od vašich konkrétnych potrieb a situácií závisí výber SSE alebo WebSocket od vašich skutočných potrieb. Ak potrebujete server len na posielanie dát klientom jedným smerom a chcete to udržať jednoduché a kompatibilné, SSE je dobrá voľba. Ak potrebujete dosiahnuť obojsmernú komunikáciu alebo ak potrebujete pokročilejšie funkcie a ovládanie, WebSocket môže byť pre vaše potreby vhodnejší.
Formát SSE event stream
Event stream je jednoduchý tok textových dát, ktorý by mal byť zakódovaný vo formáte UTF-8. Event streamSpráva je oddelená dvojicou zalomení riadkov。 Komentáre o správaní, ktoré začínajú na dvojbodku, sa ignorujú. Každé pole je reprezentované názvom poľa, nasledovaným dvojbodkou a následne textovými údajmi pre hodnotu tohto poľa.
Polia sú nasledovné:
udalosť: Reťazec používaný na identifikáciu typu udalosti. Ak je tento reťazec špecifikovaný, prehliadač odošle udalosť so špecifikovaným názvom udalosti príslušnému poslucháčovi; Klient by mal použiť addEventListener() na počúvanie špecifikovanej udalosti. Ak správa neuvádza názov udalosti, môže byť zavolaný onmessage handler.
údaje: Dátové pole správy. Keď EventSource prijme viacero po sebe idúcich riadkov začínajúcich dátami:, spája ich a vkladá medzi ne zlom riadku. Zlomenie riadku na konci je odstránené.
Id: Event ID, ktorá sa stáva hodnotou vlastnosti internej vlastnosti aktuálneho objektu EventSource "Last Event ID".
Znova: čas na opätovné spojenie. Ak sa stratí spojenie so serverom, prehliadač počká stanovený čas a potom sa pokúsi znovu pripojiť. Musí to byť celé číslo, ktoré určuje čas na opätovné pripojenie v milisekundách. Ak je špecifikovaná necelá hodnota, pole sa ignoruje.
Inštancia EventSource
Rozhranie EventSource je rozhranie medzi webovým obsahom a serverom na odosielanie udalostí.
Vlastnosť EventHandler
EventSource.onopen sa volá, keď je spojenie otvorené. EventSource.onmessage sa volá, keď je prijatá správa bez atribútu udalosti. EventSource.onerror sa volá pri výnimkách spojenia.
SSE Server (ASP.NET jadro)
Vytvorte nový projekt ASP.NET Core s .NET 8 a kód ovládača je nasledovný:
Pre klienta, ktorý nadviaže spojenie, posielajte klientovi správu každých sekundových intervalov.
SSE klient
Napíšte klientsky kód na stránke Zobraziť pomocou HTML a JS nasledovne:
Začnite projekt s nasledujúcimi efektmi:
Referencia:
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné. |