Websockets с PHP и Symfony - сетевая и серверная архитектура
У нас есть веб-приложение, которое в настоящее время использует опрос для обработки непрерывных обновлений.
При переключении на длительный опрос может возникнуть небольшая проблема с бандой, мы хотели реализовать решение Websockets, которое будет долговечным и масштабируемым.
Мой вопрос: какая архитектура понадобится для этого?
Я сам провел исследование и обнаружил, что типичная настройка для корпоративного приложения выглядит примерно так: ![websocket flow]()
Тогда поток выполнения соединения будет примерно таким:
- Первоначальное рукопожатие
- Клиент делает запрос
HTTP
к Server
вместе с JS для запроса соединения с Websocket
-
Server
отвечает, Header
содержит директиву Upgrade
и переключает протоколы для этого клиента
- Сервер Websocket устанавливает соединение
Websocket
с клиентом
- Клиент отправляет
POST
/PUT
/etc.
-
Webserver
(Apache/Nginx) извлекает результат из запроса
-
Webserver
отправляет результат в MQ
, где он добавляется в очередь
-
Message
отправляется на сервер Websocket
из MQ
-
Message
отправляется обратно клиенту
Правильно ли этот подход? Я что-то пропустил? Я что-то неправильно понимаю?
Ответы
Ответ 1
Попробуйте взглянуть на это: socketo.me
Kinda дает вам представление. Из того, что я вижу, это довольно похоже на то, что вы видели на диаграмме архитектуры, которую вы опубликовали.
Также стоит посмотреть на этот ответ на вопрос о стоп-кадре.
Ответ 2
Вы пробовали GOS WebSocketBundle?
Я использовал его на производственной площадке для обработки чата и вместе с stunnel работает безупречно над SSL.