Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 4163|Odpověď: 4

[.NET Core] SSE (1) používá ASP.NET Core jako SSE server

[Kopírovat odkaz]
Zveřejněno 5. 4. 2024 11:54:12 | | | |
Ú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é.




Předchozí:Jednoduché srovnání Garnet cache a Redis vyvinutého pomocí .NET
Další:JS poslouchá kombinaci kláves ctrl + enter
 Pronajímatel| Zveřejněno 5. 4. 2024 12:03:28 |
Výchozí prohlížečové EventSource API ukládá určitá omezení na typy povolených požadavků: jediné URL parametrů, které mohou předávat, jsou a withCredentials, protože:

Nemůžete předat v těle požadavku: Musíte zakódovat všechny informace potřebné k vykonání požadavku do URL, která je ve většině prohlížečů omezena na 2000 znaků.
Nelze předávat vlastní záhlaví požadavků
Můžete zadat pouze požadavek GET – žádná jiná metoda nemůže být specifikována.
Pokud je spojení přerušeno, nemáte kontrolu nad politikou opakování: prohlížeč to několikrát tiše zkusí a pak se zastaví, což není dost dobré pro žádnou robustní aplikaci.


fetch-event-source

Knihovna poskytuje alternativní rozhraní založené na Fetch API pro použití událostí odeslaných serverem. Je plně kompatibilní s formátem event streamu, takže pokud už máte server, který tyto události vysílá, můžete ho používat jako dříve. Nicméně nyní máte větší kontrolu nad požadavky a odpověďmi

Přihlášení k hypertextovému odkazu je viditelné.
Zveřejněno 14. 11. 2024 14:34:25 |
učený
 Pronajímatel| Zveřejněno 25. 12. 2024 16:36:44 |
Malá troska Zveřejněno 5. 4. 2024 12:03
Výchozí prohlížečové EventSource API ukládá určitá omezení na typy povolených požadavků: jediná url parametru, kterou může předávat, je withCredentia ...

Zkompilujte balíček NPM do JavaScriptového skriptu připraveného pro prohlížeč
https://www.itsvse.com/thread-10762-1-1.html
 Pronajímatel| Zveřejněno 25. 12. 2024 v 16:48:45 |
SSE (2) problém s opětovným připojením ke zdroji načtení událostí po přepnutí záložek prohlížeče
https://www.itsvse.com/thread-10906-1-1.html
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com