无法使用wscat连接到RubyonRails 5 Beta上的ActionCable WebSocket



我运行了Rails 5 Beta附带的ActionCable聊天室示例。web应用程序运行良好,数据在WebSocket中上下流动。

然而,当我尝试从命令行使用wscat直接连接到WebSocket时,我遇到了一个连接错误。

wscat连接尝试:

wscat -c ws://localhost:3000/cable

错误响应:

error: Error: connect ECONNREFUSED

起初,我认为Rails的伪造保护禁止了连接。所以我在config/environments/development.rb中添加了以下内容:

config.action_cable.disable_request_forgery_protection = true

但是,我遇到了同样的连接错误。

我尝试使用wsd命令行util连接到ActionCable WebSocket。wsd更糟糕,它因内核死机而崩溃。

我还用其他WebSocket测试了wscatwsd,包括WebSocket回声测试http://www.websocket.org/echo.html,他们工作得很好。

我被难住了。有什么建议吗?

1)通过独立服务器启动ActionCable。(这一步骤需要验证,但由于ActionCable文档目前仍不清楚,我将只布局我为实现这一目标所做的步骤)。

rails 5.0.0beta1上运行bin/cable应该会在端口28080上启动puma。

(protip:确保你没有其他冲突的puma进程在config/puma.rb上运行,因为puma将默认加载。你会记住这一点,并在稍后尝试部署rails应用程序时感谢我)

2) ActionCable::Connection::Base处理所有传入连接,并决定如何识别用户(例如current_user)或拒绝未经授权的连接。

从可操作的示例(https://github.com/rails/actioncable-examples)这是由CCD_ 12中的cookie定义的。

来自wscat的Websocket连接将在未通过身份验证的情况下被拒绝。您需要对此进行调整以满足您的需求。

ActionCable还有很多其他的"惊喜"。我希望更新这篇文章和/或写一篇博客文章,记录我让iOS客户端与ActionCable对话的经历。

祝你好运!

相关内容

  • 没有找到相关文章

最新更新