Кабель действия конфигурации для Heroku — ошибка localhost: 3000/cable

У меня проблема с моим приложением с Action Cable на Heroku:

Ошибка подключения WebSocket к «ws://localhost:3000/cable»: ошибка при установлении соединения: net::ERR_CONNECTION_REFUSED

Мое производство.рб:

  config.action_cable.url = "wss://NAME.herokuapp.com/cable"   
  config.action_cable.allowed_request_origins = ['https://NAME.herokuapp.com', 'http://NAME.herokuapp.com']

Я попытался указать сервер и в cable.js:

@App ||= {}
App.cable = ActionCable.createConsumer("wss://NAME.herokuapp.com/cable")

На всякий случай пробовал изменить в development.rb, но ничего не помогает. Heroku все еще пытается подключиться к локальному хосту.

Еще одна странная вещь, которая не имеет ничего общего с этим, я думаю, заключается в том, что приложение не может обрабатывать некоторый код js, например: также пробовал активы: прекомпилировать.

На локалхосте все работает отлично. Есть идеи, что может быть не так с героку и настройкой?


person Petr    schedule 23.07.2016    source источник


Ответы (2)


Пока ActionCable находился в разработке, я помню, что вам нужно было запустить 2 сервера для подключения по кабелю и для Rails. Я не думаю, что это все еще необходимо для окончательного релиза.

Я предполагаю, что у вас не настроен Redis на вашем экземпляре Heroku, тогда как в производственной среде ActionCable полагается на Redis для связи с сервером.

Чтобы исправить это, вы должны сделать следующее:

heroku addons:add redistogo

heroku config | grep REDISTOGO_URL

В вашем config/cable.yml установите указанный URL-адрес Redis. Я думаю, вы также должны иметь возможность использовать ENV['REDISTOGO_URL'] вместо URL-адреса.

Дайте мне знать, если это поможет.

person oreoluwa    schedule 23.07.2016
comment
Я настроил сервер Redis, и это не должно быть проблемой, но все равно спасибо. Я думаю, что это собирается рассказать героку, как подключиться к нужному серверу в веб-сокете. - person Petr; 24.07.2016

Если он работает локально, но не удаленно, это может быть проблема с SSL. Убедитесь, что вы правильно настроили конечную точку SSL для безопасного веб-сокета (wss): https://devcenter.heroku.com/articles/ssl-endpoint

Кроме того, на Heroku есть отличная запись в блоге о том, как настроить Action Cable: https://blog.heroku.com/real_time_rails_implementing_websockets_in_rails_5_with_action_cable. Увы, в статье не упоминается о необходимости настройки конечной точки SSL для работы развертывания Heroku.

person Lorenz    schedule 24.09.2016