Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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:, он объединяет их, вставляя между ними разрыв строки. Разрыв строки в конце удаляется.
идентификатор: Event ID, который становится значением свойства внутреннего свойства текущего объекта EventSource «Last Event ID».
снова пробовать: время восстановить связь. Если соединение с сервером теряется, браузер ждёт указанного времени и попытается подключиться снова. Это должно быть целое число, указывающее время повторного подключения в миллисекундах. Если задано нецелое значение, поле игнорируется.


экземпляр 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 |
Стандартный API браузера EventSource накладывает некоторые ограничения на типы разрешённых запросов: единственные URL-адреса параметров, разрешаемые для передачи, — это и withCredentials, следовательно:

Вы не можете передать в теле запроса: вы должны закодировать всю необходимую информацию для выполнения запроса в URL, который в большинстве браузеров ограничен 2000 символами.
Нельзя передавать пользовательские заголовки запросов
Вы можете подать только запрос GET — другой способ указать нельзя.
Если соединение прервано, вы не можете контролировать политику повторных попыток: браузер несколько раз бесшумно повторяет попытку, а потом останавливается, что недостаточно для надёжного приложения.


fetch-event-source

Библиотека предоставляет альтернативный интерфейс на базе API Fetch для использования событий, отправляемых сервером. Он полностью совместим с форматом потока событий, так что если у вас уже есть сервер, который излучает эти события, вы можете использовать его как раньше. Однако теперь у вас больше контроля над запросами и ответами

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

Скомпилировать NPM-пакет в JavaScript-скрипт, готовый к браузеру
https://www.itsvse.com/thread-10762-1-1.html
 Хозяин| Опубликовано 25.12.2024 16:48:45 |
Проблема с повторным подключением по запросу событий с источником SSE после смены вкладок браузера
https://www.itsvse.com/thread-10906-1-1.html
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com