Úvod do SSE
SSE znamená Server-Sent Events, což doslova znamená, že server posílá informace klientovi. SSE je jednosměrný kanál,Server může klientovi posílat informace pouzeKlient může přijmout požadavek SSE až po prvním spuštění a nemůže odpovědět.
Klíčové vlastnosti SSE zahrnují:
- Snadnost použití: SSE používá textové datové formáty, jako je prostý text, JSON atd., což usnadňuje odesílání a analýzu dat.
- Jednosměrná komunikace: SSE podporuje jednosměrnou komunikaci mezi serverem a klientem, kdy server může aktivně posílat data klientovi, zatímco klient může pouze přijímat data.
- V reálném čase: SSE navazuje dlouhodobá spojení, která umožňují serverům posílat data klientům v reálném čase bez častých požadavků.
SSE vs. WebSocket
WebSocket je další webová technologie používaná k umožnění obousměrné komunikace v reálném čase, která se v některých ohledech liší od SSE. Zde je srovnání mezi SSE a WebSocket:
- Směr posunu dat: SSE je jednosměrná komunikace mezi serverem a klientem a server může aktivně posílat data klientovi. WebSocket je naopak obousměrná komunikace, která umožňuje obousměrnou výměnu dat v reálném čase mezi serverem a klientem.
- Navazování spojení: SSE používá dlouhá HTTP-spojení k navázání spojení prostřednictvím běžných HTTP požadavků a odpovědí, čímž dochází k datovému posunu v reálném čase. WebSockety používají vlastní protokoly pro umožnění obousměrné komunikace navazováním WebSocket spojení.
- Kompatibilita: Protože SSE je založeno na protokolu HTTP, lze jej použít ve většině moderních prohlížečů a nevyžaduje další aktualizace protokolu. WebSockety jsou také podporovány ve většině moderních prohlížečů, ale mohou být problematické v některých speciálních síťových prostředích.
- Použitelné scénáře: SSE je vhodné pro situace, kdy server posílá data klientovi v reálném čase, například aktualizace cen akcií, aktuální zprávy v reálném čase apod. WebSocket je vhodný pro situace, které vyžadují obousměrnou komunikaci v reálném čase, jako jsou chatovací aplikace a vícečlenná spolupráce při úpravách.
- V závislosti na konkrétních potřebách a scénářích vašeho podnikání závisí výběr SSE nebo WebSocket na vašich skutečných potřebách. Pokud potřebujete server jen pro posílání dat klientům jedním směrem a chcete to udržet jednoduché a kompatibilní, SSE je dobrá volba. Pokud potřebujete dosáhnout obousměrné komunikace nebo pokud potřebujete pokročilejší funkce a ovládání, pak WebSocket může být pro vaše potřeby vhodnější.
Formát událostního proudu SSE
Tok událostí je jednoduchý proud textových dat, který by měl být zakódován ve formátu UTF-8. Tok událostíZpráva je oddělena dvojicí řádkových zalomení。 Komentáře k chování začínající na dvojtečku jsou ignorovány. Každé pole je reprezentováno názvem pole, následovaným dvojtečkou a následně textovými daty pro hodnotu tohoto pole.
Pole jsou následující:
událost: Řetězec používaný k identifikaci typu události. Pokud je tento řetězec specifikován, prohlížeč odešle událost s určeným názvem události příslušnému posluchači; Klient by měl použít addEventListener() k naslouchání specifikované události. Pokud zpráva nespecifikuje název události, lze zavolat onmessage handler.
data: Datové pole zprávy. Když EventSource přijme více po sobě jdoucích řádků začínajících data:, spojí je a vloží mezi ně zalomení řádku. Zlomení řádku na konci je odstraněno.
id: Event ID, která se stává hodnotou vlastnosti interní vlastnosti aktuálního objektu EventSource "Last Event ID".
zkusit ještě jednou: čas se znovu spojit. Pokud se spojení se serverem ztratí, prohlížeč počká po stanovenou dobu a pak se pokusí znovu připojit. Musí to být celé číslo, které určuje čas pro opětovné připojení v milisekundách. Pokud je určena neceločíselná hodnota, pole se ignoruje.
Instance EventSource
Rozhraní EventSource je rozhraní mezi webovým obsahem a serverem pro odesílání událostí.
Vlastnost EventHandler
EventSource.onopen se volá, když je spojení otevřené. EventSource.onmessage se volá, když je přijata zpráva bez atributu události. EventSource.onerror je vyvolán na základě výjimek spojení.
SSE Server (ASP.NET Core)
Vytvořte nový projekt ASP.NET Core s .NET 8 a kód kontroleru je následující:
Pro klienta, který navazuje spojení, pošlete klientovi zprávu každých sekundových intervalů.
SSE klient
Pište klientský kód na stránce Zobrazení pomocí HTML a JS následovně:
Začněte projekt s následujícími efekty:
Odkaz:
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné. |