我的rails(5.0.0beta4)(和actioncable)在本地运行良好。
但是在heroku上,浏览器似乎没有从actioncable流接收任何数据。
这是我的heroku设置:
我正在使用redis-to-go插件
production: &production
adapter: redis
url: redis://redistogo:[password]@hoki.redistogo.com:9079/
host: hoki.redistogo.com
port: 9079
password: [password]
inline: true
timeout: 10
在config/environments/production.rb
config.action_cable.url = "https://duewiz.herokuapp.com/cable"
config.action_cable.allowed_request_origins = ["https://duewiz.herokuapp.com",/http:\/\/duewiz.herokuapp.com.*/]
这里我尝试了wss和https协议,但都不起作用。
routes.rb
mount ActionCable.server => '/cable'
并在app/assets/javascripts/channels/cable.coffee.erb
#= require action_cable
#= require_self
#= require_tree .
#
@App ||= {}
App.cable = ActionCable.createConsumer()
我在redis-to-go服务器上运行了redis-cli monitor
,它打印出ActionCable.broadcast
次来电的数据
在heroku日志中,我可以看到ActionCable
广播
但我在浏览器中看不到任何变化,但在本地工作得很好。
我为每个部署运行heroku restart
我还记得有一件事我使用devise / warden进行身份验证(也适用于actioncable)
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user = find_verified_user
logger.add_tags 'ActionCable', current_user.email
end
protected
def find_verified_user
if verified_user = User.find_by(id: cookies.signed['user.id'])
verified_user
else
reject_unauthorized_connection
end
end
end
end
那么我应该如何在heroku上配置actioncable进行部署?
感谢您的帮助。
谢谢pdoherty926。我的浏览器控制台中没有javascript错误。