Этот чат использует «длинный опрос» или «потоковую передачу HTTP»?

StackOverflow https://stackoverflow.com/questions/2502222

Вопрос

Этот чат использует «длинный опрос» или «потоковую передачу HTTP»?

http://go-mono.com/moonlight/chat.aspx

Это было полезно?

Решение

Это не так просто. Оно использует 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 может идентифицировать отдельные браузеры. Я посмотрел на существующие рамки и т. Д., Чтобы сделать подобные вещи, но я ценил изучение того, как все это работает, и подумал, что мой случай использования может быть достаточно конкретным, чтобы иметь возможность оптимизировать больше, чем общие рамки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top