Узнайте, что такое события, отправленные сервером, их работу, функции и ограничения.
Как правило, клиент и сервер взаимодействуют по модели «запрос-ответ».
Клиент отправляет запросы на сервер по мере необходимости. Сервер обрабатывает запрос и отвечает клиенту. В большинстве случаев это работает хорошо.
Теперь предположим, что клиент хочет получить информацию или уведомление от сервера без запроса. Например, клиенту необходимо знать обновления в реальном времени, генерируемые на сервере.
Первое, что приходит на ум, когда мы думаем о передаче данных с сервера клиенту в режиме реального времени, — это Long Polling или WebSocket.
Веб-сокеты поддерживают мультиплексную двунаправленную связь.
Здесь вы можете видеть, что после начального рукопожатия устанавливается полнодуплексное соединение с постоянным сокетом. Что, если все, что нам нужно, — это однонаправленная связь (от сервера к клиенту)? В этом случае использование WebSocket будет излишним.
Вот где в игру вступает SSE (Server-Sent Events).
Что такое события, отправленные сервером (SSE)?
SSE позволяет серверам передавать данные на веб-страницы по протоколу HTTP или с использованием выделенных серверных протоколов. Таким образом, с помощью SSE данные текстовых событий могут эффективно передаваться с сервера на клиент.
Работа SSE
SSE поддерживает реализацию потоковой передачи XHR, поэтому он может эффективно работать в разных браузерах. Когда сообщения доставляются, они отправляются через одно продолжительное HTTP-соединение. Вместо того, чтобы самостоятельно заниматься потоковой передачей XHR, браузер берет на себя все управление соединениями и анализ сообщений, позволяя приложению сосредоточиться на своей бизнес-логике! SSE упрощает управление данными в режиме реального времени. Давайте посмотрим поближе.
- Автор указывает ресурс в конструкторе Источник события, и браузер подключается к удаленному HTTP-серверу, чтобы запросить его.
- Сообщения от сервера приходят время от времени.
- При получении и отправке сообщений браузер обнаруживает, что он бездействует, за исключением случаев, когда это необходимо для поддержания TCP-соединения, и переходит в спящий режим, чтобы потреблять меньше энергии.
- Браузер отключается от сервера.
- Вместо того, чтобы поддерживать соединение напрямую, браузер связывается со службой push-прокси в сети.
- В службе push-прокси клиент связывается с удаленным сервером и запрашивает ресурс, указанный пользователем в конструкторе для источника события (возможно, включая HTTP-заголовок «Last-Event-ID» и т. д.).
- Браузер позволяет мобильному устройству перейти в спящий режим.
- С сервера отправлено новое сообщение.
- Используя «push-прокси», мобильное устройство получает событие с помощью такой технологии, как OMA push, которая пробуждается лишь ненадолго для обработки события, а затем снова переходит в спящий режим.
Особенности ССЕ
- Доставка с низкой задержкой
- Эффективный анализ сообщений браузера
- Автоматическое отслеживание последнего просмотренного сообщения
- Уведомления о клиентских сообщениях как события DOM
Ограничения SSE
- Связь только от сервера к клиенту
- Может передавать только данные UTF-8
Спасибо за прочтение 🙌🏼. Если вы нашли эту статью полезной, поставьте аплодисменты с помощью кнопки 👏 и поделитесь ею в своих кругах.
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.