Используется ли в этом чате "длинный опрос" или "потоковое http"? - PullRequest
0 голосов
/ 23 марта 2010

Используется ли в этом чате "длинный опрос" или "потоковое http"?

http://go -mono.com / лунный свет / chat.aspx

1 Ответ

3 голосов
/ 23 марта 2010

Это не так просто. Он использует http://www.mibbit.com/chat,, который является полным клиентом IRC, написанным на Javascript и Java. Блог на http://blog.mibbit.com/.

Редактировать: Вот ваш ответ .

Первая часть, над которой я работал, была связь между браузером и сервером. Это делается с помощью 2 XMLHttpRequests. Первый - просто отправить данные из браузера на сервер. Он использует keep-alive, чтобы минимизировать новые соединения.

Второй XHR - это «получить ленивый опрос». Он подключается к серверу, и сервер держит его открытым, пока не появятся доступные сообщения или не истечет время ожидания. Это также keep-alive, поэтому следующий запрос отправляется по тому же соединению.

В результате вы получаете 2 соединения, открытые для сервера, с пакетами (в данном случае json) и некоторыми заголовками http время от времени. Чтобы убедиться, что сервер будет масштабироваться, я написал собственный веб-сервер на Java, используя nio. Он обрабатывает все соединения в одном потоке и, как я уже сказал, масштабируется до десятков тысяч соединений.

Если клиент запрашивает новое соединение, он отправляет запрос веб-серверу, который затем подключается и начинает проксирование и т. Д. Он также запускает сервер Identif в случае соединений IRC, чтобы сервер IRC мог идентифицировать отдельные браузеры. , Я посмотрел на существующие фреймворки и т. Д., Чтобы делать подобные вещи, но я ценил изучение того, как все это работает, и подумал, что мой сценарий использования может быть достаточно конкретным, чтобы можно было оптимизировать больше, чем это могут делать общие фреймворки.

...