为Heroku配置操作电缆-错误localhost:3000/Cable

Config Action Cable for Heroku - Error localhost:3000/cable

本文关键字:localhost 3000 Cable 错误 配置 Heroku 操作      更新时间:2023-09-26

我的应用程序与Heroku:上的Action Cable有问题

到"ws://localhost:3000/cable"的WebSocket连接失败:建立连接时出错: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仍在尝试连接到本地主机。

我认为,另一个与之毫无共同点的奇怪之处是,尽管有一些js代码有效,但该应用程序无法处理一些js码,如:alert('test')或console.log("哈哈"),我也尝试了assets:precompile。

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

ActionCable在开发过程中,我记得您必须启动2台用于电缆连接和Rails的服务器。我认为最终版本不需要这样做。

我的猜测是,您的Heroku实例上没有提供Redis,而在生产中,ActionCable的服务器通信依赖于Redis。

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

heroku addons:add redistogo

heroku config | grep REDISTOGO_URL

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

如果有帮助,请告诉我。

如果它在本地工作而不是远程工作,则可能是SSL问题。请确保为安全websocket(ws)正确设置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端点的必要性。