У нас есть веб-приложение, которое в настоящее время использует опрос для обработки непрерывных обновлений.
При переключении на длительный опрос может возникнуть небольшая проблема с бандой, мы хотели реализовать решение Websockets, которое будет долговечным и масштабируемым.
Мой вопрос: какая архитектура понадобится для этого?
Я сам провел исследование и обнаружил, что типичная настройка для корпоративного приложения выглядит примерно так:
Тогда поток выполнения соединения будет примерно таким:
- Первоначальное рукопожатие
- Клиент делает запрос
HTTP
кServer
вместе с JS для запроса соединения с Websocket -
Server
отвечает,Header
содержит директивуUpgrade
и переключает протоколы для этого клиента - Сервер Websocket устанавливает соединение
Websocket
с клиентом
- Клиент делает запрос
- Клиент отправляет
POST
/PUT
/etc.-
Webserver
(Apache/Nginx) извлекает результат из запроса -
Webserver
отправляет результат вMQ
, где он добавляется в очередь -
Message
отправляется на серверWebsocket
изMQ
-
Message
отправляется обратно клиенту
-
Правильно ли этот подход? Я что-то пропустил? Я что-то неправильно понимаю?