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.