Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 4163|Отговор: 4

[.NET Core] SSE (1) използва ASP.NET Core като SSE сървър

[Копирай линк]
Публикувано на 2024-4-5 11:54:12 | | | |
Въведение в SSE

SSE означава Server-Sent Events, което буквално означава, че сървърът изпраща информация към клиента. SSE е еднопосочен канал,Сървърът може да изпраща информация само към клиентаКлиентът може да получи SSE заявката само след първото задействане и не може да отговори.



Ключови характеристики на SSE включват:

  • Лесна употреба: SSE използва текстови формати като обикновен текст, JSON и др., което прави изпращането и анализирането на данни относително лесно.
  • Еднопосочна комуникация: SSE поддържа еднопосочна комуникация между сървъра и клиента, при която сървърът може активно да изпраща данни към клиента, докато клиентът може да получава само данните.
  • В реално време: SSE установява дългосрочни връзки, позволявайки на сървърите да изпращат данни към клиентите в реално време без чести заявки.


SSE срещу WebSocket

WebSocket е друга уеб технология, използвана за осигуряване на двупосочна комуникация в реално време, която се различава от SSE по някои отношения. Ето сравнение между SSE и WebSocket:

  • Посока на подаване на данни: SSE е еднопосочна комуникация между сървъра и клиента, като сървърът може активно да изпраща данни към клиента. WebSocket, от друга страна, е двупосочна комуникация, която позволява двупосочен обмен на данни в реално време между сървъра и клиента.
  • Установяване на връзка: SSE използва дълги HTTP-базирани връзки, за да установи връзки чрез обикновени HTTP заявки и отговори, като по този начин предоставя данни в реално време. WebSockets използват персонализирани протоколи за осигуряване на двупосочна комуникация чрез установяване на WebSocket връзки.
  • Съвместимост: Тъй като SSE е базиран на HTTP протокола, може да се използва в повечето съвременни браузъри и не изисква допълнителни ъпгрейди на протокола. WebSockets се поддържат и в огромното мнозинство съвременни браузъри, но могат да бъдат проблемни в някои специални мрежови среди.
  • Приложими сценарии: SSE е подходящ за ситуации, в които сървърът изпраща данни към клиента в реално време, като актуализации на цените на акциите, новини в реално време и др. WebSocket е подходящ за ситуации, които изискват двупосочна комуникация в реално време, като чат приложения и многолично съвместно редактиране.
  • В зависимост от конкретните бизнес нужди и ситуации, изборът на SSE или WebSocket зависи от реалните ви нужди. Ако ви трябва сървър само за изпращане на данни към клиентите в една посока и искате да го запазите прост и съвместим, SSE е добър избор. Ако трябва да постигнете двупосочна комуникация или по-напреднали функции и управление, WebSocket може да е по-подходящ за вашите нужди.


Формат на събитията на SSE

Потокът от събития е прост поток от текстови данни, който трябва да бъде кодиран във формат UTF-8. Поток от събитияСъобщението е разделено от двойка прекъсвания на редовете。 Редовете за коментари за поведение, които започват с двоеточие, се игнорират. Всяко поле се представя с име на поле, последвано от двоеточие, и след това текстови данни за стойността на това поле.

Полетата са както следва:

събитие: Низ, използван за идентифициране на типа събитие. Ако този низ е зададен, браузърът изпраща събитие с зададеното име на събитието към съответния слушател; Клиентът трябва да използва addEventListener(), за да слуша зададеното събитие. Ако съобщението не уточнява име на събитие, тогава обработващият onmessage може да бъде извикан.
данни: Данното поле на съобщението. Когато EventSource получи няколко последователни реда, започващи с data:, той ги конкатенира, като вмъква прекъсване на линия между тях. Прекъсването на линията в края е премахнато.
id: Event ID, който става стойността на свойството на вътрешното свойство на текущия обект EventSource "Last Event ID".
Опитайте: време за възстановяване на връзката. Ако връзката със сървъра бъде загубена, браузърът ще изчака определеното време и след това ще се опита да се свърже отново. Това трябва да е цяло число, което определя времето за повторно свързване в милисекунди. Ако се зададе нецелочислена стойност, полето се игнорира.


Instance EventSource

Интерфейсът EventSource е интерфейсът между уеб съдържанието и сървъра за изпращане на събития.

Свойство EventHandler

EventSource.onopen се извиква, когато връзката е отворена.
EventSource.onmessage се извиква, когато съобщение бъде получено без атрибут на събитието.
EventSource.onerror се извиква при изключения на връзката.

SSE сървър (ASP.NET Core)

Създайте нов проект за ASP.NET Core с .NET 8 и кодът на контролера е следният:


За клиента, който установява връзката, изпращайте съобщение на всеки втори интервал.


SSE клиент

Пишете клиентски код в страницата View, използвайки html и js по следния начин:


Започнете проекта със следните ефекти:



Препратка:
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.




Предишен:Просто сравнение между кеша на Garnet и Redis, разработено с .NET
Следващ:JS слуша комбинацията ctrl + enter
 Хазяин| Публикувано на 2024-4-5 12:03:28 |
Стандартният браузър EventSource API налага някои ограничения върху типовете заявки, които могат да се правят: единствените параметрични URL-адреси, които могат да преминават, са и withCredentials, следователно:

Не можете да предадете в тялото на заявката: Трябва да кодирате цялата необходима информация за изпълнение на заявката в URL адреса, който е ограничен до 2000 знака в повечето браузъри.
Не можете да подадете в персонализирани заглавия за заявки
Можеш да направиш само GET заявка – не може да се посочи друг метод.
Ако връзката е прекъсната, нямаш контрол върху политиката за повторни опити: браузърът тихо опитва няколко пъти и после спира, което не е достатъчно за каквото и да е стабилно приложение.


fetch-event-source

Библиотеката предоставя алтернативен интерфейс, базиран на Fetch API, за използване на събития, изпратени от сървъра. Той е напълно съвместим с формата на event stream, така че ако вече имате сървър, който излъчва тези събития, можете да го използвате както преди. Въпреки това, сега имате повече контрол върху заявките и отговорите

Входът към хиперлинк е видим.
Публикувано на 2024-11-14 14:25 |
Научих
 Хазяин| Публикувано на 2024-12-25 16:36:44 |
Малка шлака Публикувано на 2024-4-5 12:03
Стандартният браузър EventSource API налага някои ограничения върху типовете заявки, които са разрешени: единственият параметърен URL, който може да се предава, е withCredentia ...

Компилирайте NPM пакета в JavaScript скрипт, готов за браузър
https://www.itsvse.com/thread-10762-1-1.html
 Хазяин| Публикувано на 2024-12-25 16:48:45 |
Проблем с повторното свързване на източника на SSE (2) след смяна на табове в браузъра
https://www.itsvse.com/thread-10906-1-1.html
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com