С помощью WebSockets можно установить полный дуплекс и постоянное соединение между клиентом и сервером. Соединение остается открытым до тех пор, пока приложение работает (т. Е. Оно является постоянным), и поскольку оно является полнодуплексным, возможна двусторонняя одновременная связь, т.е. теперь сервер способен инициировать связь и «передавать» некоторые данные в клиент, когда новые данные (которые интересуют клиента) становятся доступными.
Протокол WebSockets с отслеживанием состояния и позволяет реализовать шаблон обмена сообщениями «Публикация-подписка (или публикация / подписка)» (как функциональность поверх базового транспорта), который является основной концепцией, используемой в технологиях реального времени, где вы Вы можете получать новые обновления в форме push-сообщений на сервере без необходимости повторного запроса (обновления страницы) клиентом, как вы указали.
Тем не менее, я понимаю, почему вы не понимаете, как установить WebSocket с несколькими клиентами. Идея состоит в том, чтобы иметь центральный объект (в идеале, архитектуру распределенных систем), который поддерживает соединения со всеми клиентами и служит в качестве шины сообщений для выполнения маршрутизации, необходимой для публикации / подписки, в режиме реального времени.
Это очень сложно и сложно, и необходимость иметь дело с масштабированием на основе спайков только увеличивает сложность. Как правило, вместо создания такой архитектуры с нуля, вы должны использовать сеть потоков данных (DSN), которая является абстракцией архитектуры распределенных систем, о которой я упоминал, в виде службы, к которой ваши клиенты могут подключиться для публикации или публикации. подписка на данные по различным каналам.
Я интенсивно работал с Сетью потоков данных Ably , которая делает это очень хорошо, а также предлагает такие вещи, как адаптеры протоколов, чтобы иметь возможность подключать протоколы, отличные от WebSockets (такие как MQTT), а также позволяет вам подключитесь к любой сторонней службе, такой как AWS Lambda, чтобы вызывать функцию без сервера, возможно, в режиме реального времени. это довольно полезно и очень легко начать с моего опыта.
Вот видео из презентации, которую я сделал о WebSockets и о том, как вы можете создать прямую трансляцию для ваших данных.
Надеюсь, это поможет!