【问题标题】:Websocket Rails getting 404 during handshakeWebsocket Rails 在握手期间得到 404
【发布时间】:2016-09-05 17:27:11
【问题描述】:

我安装了“websocket-rails”gem,在进行默认配置后,我刚刚创建了一个 JS 调度程序,但在 chrome 控制台上出现 404 错误。

这是我的 JS:

var dispatcher = new WebSocketRails('localhost:3000/websocket');

这是我收到的消息:

WebSocket 连接到“ws://localhost:3000/websocket”失败:WebSocket 握手期间出错:意外响应代码:404

其他一切都按照第一步指南的建议

events.rb

subscribe :test, :to => ChatServerController, :with_method => :test

控制器/chat_server_controller.rb

class ChatServerController < WebsocketRails::BaseController
  def initialize_session
    # perform application setup here
    controller_store[:message_count] = 0
  end

  def test
      puts 'Hello'
  end
end

【问题讨论】:

  • 考虑到你的新问题stackoverflow.com/q/37285483/1212000,这个问题还有效吗?如果您自己找到了问题的解决方案,请考虑通过自己提供此问题的答案并接受它来帮助遇到类似问题的人。
  • 你是对的。不幸的是,我没有设法解决这个问题并使用 private_pub (github.com/ryanb/private_pub) gem 实现了该功能的新版本

标签: ruby-on-rails ruby websocket websocket-rails


【解决方案1】:

有一个潜在的解决方案涉及 gem 依赖 posted on github。但是,如果您查看 repo(151 个未解决的问题,27 个拉取请求),看起来这个 gem 并没有被积极维护。 2016 年已关闭的问题正在由打开它们的同一个人关闭。

您可以通过将第二个参数设置为 false 来使您的应用程序通过 forcing websockets to use http 工作。

var Dispatcher = new WebSocketRails('localhost:3000/websocket', false);

我担心使用 http 轮询的可扩展性以及 websocket-rails gem 的未来。对我来说,似乎最好的方法是升级到 Rails 5 并使用Action Cable

【讨论】:

  • 感谢您抽出宝贵时间。正如你所说,gem 没有更新,当我将它安装在不同的环境中时,我才发现一个严重的困难。我使用了不同的 gem (private_pub),现在我可以使用这个功能了。
猜你喜欢
  • 1970-01-01
  • 2016-11-30
  • 2021-04-06
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
相关资源
最近更新 更多