Symfony Ratchet WSS

У меня проблема со связью HTTPS => WS, и я не могу найти способ ее решить.

Я использую Symfony 4.1 и Ratchet WsServer. Сервер запускается через команду Symfony на порту 9090 и корректно работает с ws на локальной машине с http. Конечно, на https я переключил его на wss и получил эту ошибку:

WebSocket connection to 'wss://servername:9090/' failed: WebSocket opening handshake timed out

Мой внутренний код:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $server = IoServer::factory(new HttpServer(
        new WsServer(
            new Widget($this->getContainer(), $this->logger)
        )
    ), 9090);

    $server->run();
}

Может кто знает как решить. Я видел несколько руководств по настройке nginx и apache в одних и тех же ситуациях, но я не уверен, потому что в этом случае сервер запускается с PHP и Symfony.

Еще интересный момент, потом пытаюсь подключиться через браузер к WSS, получаю ту же ошибку. Похоже проблема не в сертификате, а в сервере.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
585
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решаю это с помощью прокси NGINX. У меня NGINX+Apache и в этом случае помогает добавить прокси к NGINX.

upstream websocket_server {
     server app-ip:9091;
}
server {
    listen      46.101.45.214:443;
    server_name app-name ;
    ssl         on;
    ssl_certificate      /home/admin/conf/web/ssl.app-name.pem;
    ssl_certificate_key  /home/admin/conf/web/ssl.app-name.key;
    error_log  /var/log/apache2/domains/app-name.error.log error;

    location /wss/ {
        proxy_pass  http://websocket_server;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400;
    }
.....

Другие вопросы по теме