无法使用wscat连接到Ruby on Rails 5 Beta上的ActionCable WebSocket

时间:2016-01-05 03:31:55

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

我运行了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更糟糕,它因内核恐慌而崩溃。

我还使用其他WebSockets测试了wscatwsd,包括WebSocket Echo Test http://www.websocket.org/echo.html,它们运行良好。

我很难过。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

1)通过独立服务器启动ActionCable。 (这一步需要验证,但由于ActionCable文档目前仍然模糊不清,我将仅仅布置我为完成这项工作而采取的步骤)。

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

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

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

来自actioncable示例(https://github.com/rails/actioncable-examples),这是由/app/channels/application_cable/connection.rb中的Cookie定义的。

来自wscat的Websocket连接将在没有通过身份验证的情况下被拒绝。您需要调整它以满足您的需求。

ActionCable仍然有很多其他的惊喜"。我希望更新这篇文章和/或制作博客文章记录我让iOS客户端与ActionCable交谈的经历。

祝你好运!