Этот чат использует «длинный опрос» или «потоковую передачу HTTP»?
-
21-09-2019 - |
Вопрос
Этот чат использует «длинный опрос» или «потоковую передачу HTTP»?
Решение
Это не так просто. Оно использует http://www.mibbit.com/chat, который является полным клиентом IRC, написанным в JavaScript и Java. Блог в http://blog.mibbit.com/.
Редактировать: Вот ваш ответ.
Первой частью, которую я получил, была связь между браузером и сервером. Это делается с использованием 2 xmlhttprequests. Первый - просто отправлять данные из браузера на сервер. Он использует Keep-Alive, чтобы минимизировать новые соединения.
Второй XHR - это «Получить ленивый опрос». Он подключается к серверу, и сервер удерживает его открытым до тех пор, пока не появятся сообщения, или истечет срок действия тайм -аута. Этот также является поддержанием, поэтому следующий запрос понизится тем же соединением.
То, что вы в конечном итоге, - это 2 подключения, которые удерживаются на сервере, с пакетами (в данном случае JSON) и некоторыми заголовками HTTP время от времени. Чтобы убедиться, что сервер будет масштабироваться, я написал пользовательский веб -сервер в Java с помощью NIO. Он обрабатывает все соединения в одном потоке, и, как я уже сказал, масштабируется до десятков тысяч соединений.
Если клиент запрашивает новое соединение, он отправляет запрос на WebServer, который затем подключается, и запускает прокси и т. Д. Он также запускает идентификационный сервер в случае соединений IRC, так что сервер IRC может идентифицировать отдельные браузеры. Я посмотрел на существующие рамки и т. Д., Чтобы сделать подобные вещи, но я ценил изучение того, как все это работает, и подумал, что мой случай использования может быть достаточно конкретным, чтобы иметь возможность оптимизировать больше, чем общие рамки.