我一直在使用Rails 5和ActiveCable实现一个简单的聊天应用程序。这个应用程式在本地运作良好。但是,当我尝试在heroku上进行测试时,我在JS控制台中获得了以下内容:
“WebSocket握手期间出错:缺少“升级” header ”
我做了什么:
我遵循了这个guide。
我设置了cable.yml
production:
adapter: redis
url: redis://rediscloud:url_here
我在production.rb中设置了URL
Rails.application.configure do
config.web_socket_server_url = "wss://my-app.herokuapp.com/cable"
我设置了允许的主机。
config.action_cable.allowed_request_origins =
['https://my-app.herokuapp.com',
'http://my-app.herokuapp.com']
但这无济于事。有什么想法为什么会发生此错误,或者我该如何解决?
问候。
最佳答案
问题出在默认服务器上。
默认服务器服务器为Thin。它发送了不正确的回复。
我已根据this指南将服务器改回了puma,并且无需进行任何代码更改即可解决此问题。
关于ruby-on-rails - Heroku:Rails 5 ActiveCable配置问题。 WebSocket握手期间出错: 'Upgrade' header 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42269972/