Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 4163|Odpowiedź: 4

[.NET Core] SSE (1) używa ASP.NET Core jako serwera SSE

[Skopiuj link]
Opublikowano 2024-4-5 11:54:12 | | | |
Wprowadzenie do SSE

SSE oznacza Server-Sent Events, co dosłownie oznacza, że serwer przesyła informacje do klienta. SSE to kanał jednokierunkowy,Serwer może przesyłać informacje tylko do klientaKlient może otrzymać żądanie SSE dopiero po pierwszym wyzwoleniu i nie może odpowiedzieć.



Kluczowe cechy SSE obejmują:

  • Łatwość użycia: SSE wykorzystuje formaty danych oparte na tekstach, takie jak tekst zwykły, JSON itp., co ułatwia przesyłanie i analizę danych.
  • Komunikacja jednokierunkowa: SSE obsługuje jednokierunkową komunikację między serwerem a klientem, gdzie serwer może aktywnie przesyłać dane do klienta, podczas gdy klient może jedynie je odbierać.
  • Czas rzeczywisty: SSE nawiązuje długoterminowe połączenia, pozwalając serwerom przesyłać dane klientom w czasie rzeczywistym bez częstych żądań.


SSE vs. WebSocket

WebSocket to kolejna technologia internetowa wykorzystywana do umożliwienia dwukierunkowej komunikacji w czasie rzeczywistym, która różni się od SSE pod pewnymi względami. Oto porównanie między SSE a WebSocket:

  • Kierunek wypychania danych: SSE to jednokierunkowa komunikacja między serwerem a klientem, a serwer może aktywnie przesyłać dane do klienta. WebSocket natomiast to komunikacja dwukierunkowa, umożliwiająca dwukierunkową wymianę danych w czasie rzeczywistym między serwerem a klientem.
  • Nawiązywanie połączeń: SSE wykorzystuje długie połączenia oparte na HTTP do nawiązywania połączeń za pomocą zwykłych żądań HTTP i odpowiedzi, a tym samym przesyła dane w czasie rzeczywistym. WebSockety wykorzystują niestandardowe protokoły umożliwiające dwukierunkową komunikację poprzez nawiązywanie połączeń WebSocket.
  • Kompatybilność: Ponieważ SSE opiera się na protokole HTTP, może być używany w większości nowoczesnych przeglądarek i nie wymaga dodatkowych aktualizacji protokołu. WebSockety są również wspierane w zdecydowanej większości nowoczesnych przeglądarek, ale mogą stanowić problemy w niektórych specjalnych środowiskach sieciowych.
  • Odpowiednie scenariusze: SSE nadaje się do sytuacji, gdy serwer przesyła dane do klienta w czasie rzeczywistym, takie jak aktualizacje cen akcji, aktualizacje wiadomości w czasie rzeczywistym itp. WebSocket nadaje się do sytuacji wymagających dwukierunkowej komunikacji w czasie rzeczywistym, takich jak aplikacje czatu czy wieloosobowa wspólna edycja.
  • W zależności od konkretnych potrzeb i sytuacji biznesowej, wybór SSE lub WebSocket zależy od Twoich rzeczywistych potrzeb. Jeśli potrzebujesz serwera tylko do przesyłania danych klientom w jednym kierunku i chcesz, żeby było to proste i kompatybilne, SSE to dobry wybór. Jeśli potrzebujesz dwukierunkowej komunikacji lub bardziej zaawansowanych funkcji i kontroli, WebSocket może być lepszym rozwiązaniem dla Twoich potrzeb.


Format strumienia zdarzeń SSE

Strumień zdarzeń to prosty strumień danych tekstowych, który powinien być zakodowany w formacie UTF-8. Strumień zdarzeńWiadomość jest oddzielona parą podziałów linii。 Komentarze dotyczące zachowania zaczynające się na dwukropek są ignorowane. Każde pole jest reprezentowane nazwą pola, następnie dwuśrednikiem, a następnie tekstowymi danymi o wartości tego pola.

Pola są następujące:

zdarzenie: Ciąg służący do identyfikacji typu zdarzenia. Jeśli ten ciąg jest podany, przeglądarka wysyła zdarzenie o podanej nazwie zdarzenia do odpowiedniego nasłuchu; Klient powinien użyć addEventListener() do nasłuchiwania określonego zdarzenia. Jeśli wiadomość nie podaje nazwy zdarzenia, można wywołać obsługę onmessage.
dane: Pole danych wiadomości. Gdy Źródło Zdarzeń otrzymuje wiele kolejnych linii zaczynających się od danych:, łączy je, wstawiając przerwanie linii pomiędzy nimi. Przerwa na końcu jest usuwana.
id: Event ID, który staje się wartością właściwości wewnętrznej obiektu EventSource aktualnego obiektu EventSource "Last Event ID".
Ponów próbę: czas na ponowne połączenie. Jeśli połączenie z serwerem zostanie utracone, przeglądarka poczeka przez określony czas, a następnie spróbuje ponownie się połączyć. Musi to być liczba całkowita określająca czas ponownego połączenia w milisekundach. Jeśli podana zostanie wartość niecałkowita, pole jest ignorowane.


Instancja EventSource

Interfejs EventSource to interfejs między treściami webowymi a serwerem umożliwiający przesyłanie zdarzeń.

Własność EventHandler

EventSource.onopen jest wywoływany w momencie otwarcia połączenia.
EventSource.onmessage jest wywoływany po otrzymaniu wiadomości bez atrybutu zdarzenia.
EventSource.onerror jest wywoływany w przypadku wyjątków połączenia.

SSE Server (ASP.NET Core)

Utwórz nowy projekt ASP.NET Core z .NET 8, a kod kontrolera wygląda następująco:


Dla klienta, który nawiązuje łącze, wysyłaj komunikat do klienta co sekundę.


Klient SSE

Napisz kod klienta na stronie View za pomocą html i js w następujący sposób:


Rozpocznij projekt od następujących efektów:



Odniesienie:
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.
Logowanie do linku jest widoczne.




Poprzedni:Proste porównanie pamięci podręcznej Garnet i Redis opracowanej w .NET
Następny:JS nasłuchuje kombinacji ctrl + enter
 Ziemianin| Opublikowano 2024-4-5 12:03:28 |
Domyślne API EventSource przeglądarki nakłada pewne ograniczenia na rodzaje dozwolonych żądań: jedynymi parametrami URL, które mogą przesyłać, są i withCredentials, a zatem:

Nie możesz przekazać treści żądania: musisz zakodować wszystkie informacje potrzebne do wykonania żądania w URL, który w większości przeglądarek jest ograniczony do 2000 znaków.
Nie można przekazywać niestandardowych nagłówków żądań
Możesz wykonać tylko żądanie GET – nie można wskazać innej metody.
Jeśli połączenie zostanie przerwane, nie masz kontroli nad polityką powtórek: przeglądarka cicho próbuje kilka razy, a potem się zatrzymuje, co nie wystarcza dla żadnej solidnej aplikacji.


fetch-event-source

Biblioteka oferuje alternatywny interfejs oparty na Fetch API do obsługi zdarzeń wysyłanych przez serwer. Jest w pełni kompatybilny z formatem strumienia zdarzeń, więc jeśli masz już serwer, który emituje te zdarzenia, możesz korzystać z niego jak wcześniej. Jednak teraz masz większą kontrolę nad prośbami i odpowiedziami

Logowanie do linku jest widoczne.
Opublikowano 2024-11-14 14:34:25 |
uczony
 Ziemianin| Opublikowano 2024-12-25 16:36:44 |
Mała żużel Opublikowano 5 kwietnia 2024 o 12:03
Domyślne EventSource API przeglądarki nakłada pewne ograniczenia na typy dozwolonych żądań: jedynym parametrem URL, który może się przekazać, jest withCredentia ...

Skompiluj pakiet NPM do skryptu JavaScript gotowego do przeglądarki
https://www.itsvse.com/thread-10762-1-1.html
 Ziemianin| Opublikowano 2024-12-25 16:48:45 |
SSE (2) problem z ponownym połączeniem źródła pobierania zdarzeń po zmianie zakładek przeglądarki
https://www.itsvse.com/thread-10906-1-1.html
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com