在 Heroku 上部署 ActionCable (Rails 5 beta4)
Deploy ActionCable on Heroku (Rails 5 beta4)
我在我的本地主机上有一个使用 ActionCable 的 rails 5 应用程序,我正在尝试将它部署到 heroku。
访问聊天室所在页面时,我在chrome的控制台看到:
WebSocket connection to 'wss://full-beyond-9816.herokuapp.com/cable' failed: Error during WebSocket handshake: Unexpected response code: 404
我确实在 heroku 上安装了 Redis 和 Redis 插件。这是我的 cable.yml 文件的生产部分:
production: &production
:url: redis://redistogo:4140ce7f3e7493bd1b12@porgy.redistogo.com:9463/
:host: tarpon.redistogo.com
:port: 10272
:password: 12e348ac10ca002879ce7d85daf0bb0
:inline: true
:timeout: 1
这是我的 room.coffee 文件:
(function() {
this.App || (this.App = {});
App.cable = ActionCable.createConsumer();
}).call(this);
在 heroku 上设置 ActionCable 似乎很棘手,我发现关于这个主题的每个 post 要么使用 Phusion Passenger(我使用的是 Puma),要么使用相当旧的 ActionCable 版本(我我正在使用 Rails 5).
的最新测试版
我该如何设置?
感谢您的宝贵时间和帮助
很难从你的错误中分辨出来。我确实设法使用 Redis 插件和 Puma 在 Heroku 上部署了 ActionCable。尽管我不得不承认,由于 ActionCable 是超级新产品,因此很难获得任何支持。我不得不四处游玩才能让它发挥作用。
对于您的情况,您可能遇到了 cors 问题。查看文件 config/environments/production.rb,取消注释以下部分并添加您的 heroku 应用名称:
# Action Cable endpoint configuration
config.action_cable.url = 'wss://yourappname.herokuapp.com/cable'
config.action_cable.allowed_request_origins = [ 'https://yourappname.herokuapp.com', /http:\/\/yourappname.herokuapp.com.*/ ]
以防万一,这是我的 cable.yml 文件:
# Action Cable uses Redis by default to administer connections, channels, and sending/receiving messages over the WebSocket.
production:
adapter: redis
url: add-hereyour-redis-url-from-heroku-redis-to-go-addon
development:
adapter: async
test:
adapter: async
另外不要忘记在生产中将 gem Redis 添加到 运行 Action Cable。关于您的 room.coffee 文件,仅供参考,它应该看起来像这样(意味着客户端需要设置此连接的消费者实例):
#= require action_cable
#= require_self
#= require_tree .
@App = {}
App.cable = ActionCable.createConsumer()
我在我的本地主机上有一个使用 ActionCable 的 rails 5 应用程序,我正在尝试将它部署到 heroku。 访问聊天室所在页面时,我在chrome的控制台看到:
WebSocket connection to 'wss://full-beyond-9816.herokuapp.com/cable' failed: Error during WebSocket handshake: Unexpected response code: 404
我确实在 heroku 上安装了 Redis 和 Redis 插件。这是我的 cable.yml 文件的生产部分:
production: &production
:url: redis://redistogo:4140ce7f3e7493bd1b12@porgy.redistogo.com:9463/
:host: tarpon.redistogo.com
:port: 10272
:password: 12e348ac10ca002879ce7d85daf0bb0
:inline: true
:timeout: 1
这是我的 room.coffee 文件:
(function() {
this.App || (this.App = {});
App.cable = ActionCable.createConsumer();
}).call(this);
在 heroku 上设置 ActionCable 似乎很棘手,我发现关于这个主题的每个 post 要么使用 Phusion Passenger(我使用的是 Puma),要么使用相当旧的 ActionCable 版本(我我正在使用 Rails 5).
的最新测试版我该如何设置? 感谢您的宝贵时间和帮助
很难从你的错误中分辨出来。我确实设法使用 Redis 插件和 Puma 在 Heroku 上部署了 ActionCable。尽管我不得不承认,由于 ActionCable 是超级新产品,因此很难获得任何支持。我不得不四处游玩才能让它发挥作用。
对于您的情况,您可能遇到了 cors 问题。查看文件 config/environments/production.rb,取消注释以下部分并添加您的 heroku 应用名称:
# Action Cable endpoint configuration
config.action_cable.url = 'wss://yourappname.herokuapp.com/cable'
config.action_cable.allowed_request_origins = [ 'https://yourappname.herokuapp.com', /http:\/\/yourappname.herokuapp.com.*/ ]
以防万一,这是我的 cable.yml 文件:
# Action Cable uses Redis by default to administer connections, channels, and sending/receiving messages over the WebSocket.
production:
adapter: redis
url: add-hereyour-redis-url-from-heroku-redis-to-go-addon
development:
adapter: async
test:
adapter: async
另外不要忘记在生产中将 gem Redis 添加到 运行 Action Cable。关于您的 room.coffee 文件,仅供参考,它应该看起来像这样(意味着客户端需要设置此连接的消费者实例):
#= require action_cable
#= require_self
#= require_tree .
@App = {}
App.cable = ActionCable.createConsumer()