Как поддерживает SSE клиентов mush?

#sockets #http2 #server-sent-events

#сокеты #http2 #отправленные сервером события

Вопрос:

Давайте предположим, что есть несколько клиентов, которые должны получать обновленные данные с сервера. Они подключаются к серверу и обмениваются данными, используя отправленное сервером событие push.

Откуда SSE знает, что конкретное сообщение должно быть адресовано конкретному клиенту, как это работает в сокетах?

Поддерживает ли он широковещательные или личные сообщения?

Комментарии:

1. Что вы имеете в виду?

Ответ №1:

Откуда SSE знает, что конкретное сообщение должно быть адресовано конкретному клиенту, как это работает в сокетах?

Клиент подключается к URL-адресу на сервере. Вы можете дополнительно добавить параметры запроса к URL, которые могут использоваться для логики.

Поскольку клиент инициировал соединение, сервер должен все время удерживать «дескриптор» этого соединения, чтобы он мог использовать его для отправки данных. Таким образом, это похоже на сокеты.

Поддерживает ли он широковещательные или личные сообщения?

Сервер должен перебирать все дескрипторы соединений, чтобы отправлять данные всем клиентам. Он может отправлять данные только некоторым клиентам, подобно личным сообщениям. То, как обрабатываются соединения, зависит от сервера.

Комментарии:

1. Привет, не могли бы вы поделиться примером того, как отправлять сообщения только для определенных клиентов? Также может ли один клиент открывать некоторые соединения sse? Например, по одному отправлены личные сообщения, по другому уведомления и так далее

2. Правильно ли, что sse устанавливает частное соединение один к одному? Может ли это быть один ко многим?

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