Первая часть, над которой я работал, была связь между браузером и сервером. Это делается с помощью 2 XMLHttpRequests. Первый - просто отправить данные из браузера на сервер. Он использует keep-alive, чтобы минимизировать новые соединения.
Второй XHR - это «получить ленивый опрос». Он подключается к серверу, и сервер держит его открытым, пока не появятся доступные сообщения или не истечет время ожидания. Это также keep-alive, поэтому следующий запрос отправляется по тому же соединению.
В результате вы получаете 2 соединения, открытые для сервера, с пакетами (в данном случае json) и некоторыми заголовками http время от времени.
Чтобы убедиться, что сервер будет масштабироваться, я написал собственный веб-сервер на Java, используя nio. Он обрабатывает все соединения в одном потоке и, как я уже сказал, масштабируется до десятков тысяч соединений.
Если клиент запрашивает новое соединение, он отправляет запрос веб-серверу, который затем подключается и начинает проксирование и т. Д. Он также запускает сервер Identif в случае соединений IRC, чтобы сервер IRC мог идентифицировать отдельные браузеры. , Я посмотрел на существующие фреймворки и т. Д., Чтобы делать подобные вещи, но я ценил изучение того, как все это работает, и подумал, что мой сценарий использования может быть достаточно конкретным, чтобы можно было оптимизировать больше, чем это могут делать общие фреймворки.