【发布时间】:2016-04-08 19:25:07
【问题描述】:
我运行了 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 命令行工具连接到ActionCable WebSocket。 wsd 更糟糕的是,它因内核恐慌而崩溃。
我还使用其他 WebSocket 测试了 wscat 和 wsd,包括 WebSocket Echo Test http://www.websocket.org/echo.html,它们运行良好。
我被难住了。有什么建议吗?
【问题讨论】:
-
-
@tw-airball 感谢评论。我的路线文件包括
mount ActionCable.server => '/cable'。我试过wscat -c ws://localhost:28080/cable,但看到同样的错误error: Error: connect ECONNREFUSED。 -
你有想过这个吗?我可以使用 telnet 会话很好地连接,即
telnet localhost 3000并进行手动 websocket 升级,但wscat -c ws://localhost:3000每次都失败并出现error: Error: connect ECONNREFUSED 127.0.0.1:3000。 Rails 日志中没有任何内容,好像它真的从未收到过请求 -
顺便说一句,我可以让它工作的唯一方法。是将 Rails 绑定到主机
0.0.0.0即rails server -b 0.0.0.0
标签: websocket ruby-on-rails-5 actioncable