Управление онлайн-пользователями на сервере без использования веб-сокетов - PullRequest
0 голосов
/ 28 сентября 2018

Я хотел бы показать список подключенных пользователей без использования веб-сокетов.Я подумал использовать http заголовок

Connection: keep-alive

для получения постоянных соединений.Затем, когда клиенты покидают веб-сайт, они запускают обработчик слушателя для события перед загрузкой , чтобы заметить сервер, что клиент собирается покинуть список.Но как сервер может уведомить остальных подключенных клиентов об обновлении их списков?(помните, без использования веб-сокетов и, если возможно, без заставления клиентов запрашивать какой-либо интервал для сервера)

1 Ответ

0 голосов
/ 28 сентября 2018

Таким образом, использование заголовка Connection: keep-alive означает, что браузер и сервер будут выполнять несколько запросов / ответов http по одному TCP-соединению против открытия и закрытия TCP-соединения для каждого http-запроса.Но это все равно не позволяет серверу просто передавать данные в любое время. Чтобы сервер мог что-либо ответить, клиент все равно должен будет отправлять запросы .Так что это на самом деле не связано с событиями push-уведомлений в реальном времени.

и, если возможно, без требования клиентов о интервале между запросами к серверу

Это на самом деле невозможно.Как я уже сказал, сервер не может отправлять данные клиенту по протоколу http, если клиент сначала не запросил их.

Поэтому необходимо либо сделать интервальные запросы для списка пользователей

или

вы можете сделать так, чтобы он "имитировал" отправку с сервера с помощью http-длинного опроса.

Основная идея состоит в том, что сервер никогда не "заканчивает" свой ответ на запрос клиента, ноотправляет свой ответ в виде фрагментов, когда эти фрагменты будут обрабатываться на стороне клиента как отдельные фрагменты данных.Но это решение является хакерским и имеет много минусов.В любом случае, длинный опрос http более или менее симулирует передачу данных в реальном времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...