Rails 5 — Ошибка во время рукопожатия WebSocket: значение заголовка «Connection» должно содержать «Upgrade»

В настоящее время я пытаюсь развернуть приложение с использованием Rails 5.0.0.beta2, но когда я загружаю приложение в свою консоль javascript, я вижу

Ошибка подключения WebSocket к «wss://example.com/cable»: ошибка во время рукопожатия WebSocket: значение заголовка «Connection» должно содержать «Upgrade»

Я использую Apache/Passenger в качестве веб-сервера.

Кто-нибудь еще сталкивался с этой проблемой, и если да, то как вы ее решили?


person Kyle Decot    schedule 10.02.2016    source источник
comment
Вы уже решили это?   -  person samarth    schedule 19.11.2016
comment
Я решил эту проблему. на самом деле для этого нужно сделать 3 шага: A) использовать wss://example.com/cable 2) изменить порт (с 80 на что-то другое) 3) добавить свой IP-адрес в исключение брандмауэра.   -  person samarth    schedule 21.11.2016


Ответы (1)


Веб-серверу потребуется обновить соединение через веб-сокет, чтобы соединение могло сохраняться. Я предполагаю, что это не происходит из-за ошибки jscript, которую вы видите.

Если бы вы использовали Nginx, вот как бы вы это сделали, используя конфигурацию обратного прокси-сервера Nginx: неожиданный-ответ-код">ActionCable на AWS: ошибка во время рукопожатия WebSocket: неожиданный код ответа: 404

Это ключевая часть:

      # enables WS support
      location /cable {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
      }

Также рассмотрите возможность использования пумы вместо пассажира.

person KeithP    schedule 22.02.2016
comment
Я изменил его. но все равно не повезло :( вот мой файл конфигурации выглядит так: location /cable { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; passenger_app_group_name gorails_websocket; passenger_force_max_concurrent_requests_per_process 0; } - person samarth; 19.11.2016
comment
возможно ли вообще использовать веб-сокеты с пассажиром на сервере apache (с nodejs, а не ruby)?? - person oldboy; 16.12.2018