Heroku的配置操作电缆 - 错误localhost:3000 / cable

时间:2016-07-23 18:00:39

标签: javascript ruby-on-rails heroku ruby-on-rails-5 actioncable

我的应用程序在Heroku上使用Action Cable时出现问题:

WebSocket连接到' ws:// localhost:3000 / cable'失败:连接建立错误:net :: ERR_CONNECTION_REFUSED

我的生产.rb:

  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仍在尝试连接到localhost。

我认为与我没有任何共同点的另一个奇怪的事情是应用程序无法处理一些js代码,例如:alert(' test')或console.log("哈哈")尽管有一些js代码工作,我尝试了资产:预编译。

在localhost中,一切都很完美。知道heroku和设置有什么问题吗?

2 个答案:

答案 0 :(得分:0)

虽然ActionCable正在开发中,但我记得你必须为电缆连接和Rails启动2台服务器。我不认为最终版本仍然需要这样做。

我的猜测是你没有在Heroku实例上配置Redis,而在Production中,ActionCable依赖Redis进行服务器通信。

要解决此问题,您应该执行以下操作:

heroku addons:add redistogo

heroku config | grep REDISTOGO_URL

config/cable.yml中,将Redis网址设置为给定的网址。我想你也应该能够使用ENV['REDISTOGO_URL']代替网址。

如果有帮助,请告诉我。

答案 1 :(得分:-1)

如果它在本地但不是远程工作,则可能是SSL问题。确保为安全websocket(wss)正确设置SSL端点: 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。唉,文章没有提到为Heroku部署设置SSL端点的必要性。