【问题标题】:Heroku: Rails 5 ActiveCable configuration issue. Error during WebSocket handshake: 'Upgrade' header is missingHeroku:Rails 5 ActiveCable 配置问题。 WebSocket 握手期间出错:缺少“升级”标头
【发布时间】:2017-02-16 09:34:28
【问题描述】:

我一直在使用 Rails 5 和 ActiveCable 实现一个简单的聊天应用程序。在本地,这个应用程序很好用。但是当我尝试在 heroku 上测试它时,我在 JS 控制台中得到以下内容:

'WebSocket 握手期间出错:'Upgrade' 标头丢失'

我做了什么: 我关注了这个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']

但这无济于事。任何想法为什么会发生此错误或我该如何解决?

问候。

【问题讨论】:

    标签: ruby-on-rails sockets heroku websocket actioncable


    【解决方案1】:

    问题出在默认选择的服务器上。

    默认服务器服务器是 Thin。它发送了错误的回复。

    我已根据this 指南将服务器改回 puma,无需更改任何代码即可解决此问题。

    【讨论】:

      【解决方案2】:

      在同一个问题苦苦挣扎之后,我们甚至开始考虑将默认服务器从 thin 更改为 Puma

      但我们终于得到了答案:)

      ActionCable 现在可以使用 Thin 和一些额外的配置工作: 在您的 Gemfile 中:

      gem 'faye-websocket'
      gem 'thin'
      

      创建一个config/initializers/thin_action_cable.rb

      Rails.application.config.action_cable.use_faye = true
      Faye::WebSocket.load_adapter 'thin'
      

      此链接可帮助我解决该问题。

      ActionCable not working with Thin #23696

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-16
        • 2016-05-21
        • 2014-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-12
        • 1970-01-01
        相关资源
        最近更新 更多