gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:27:24 28 4
gpt4 key购买 nike

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

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

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

最佳答案

1) 通过独立服务器启动 ActionCable。 (此步骤需要验证,但由于 ActionCable 文档目前仍不清楚,我将仅列出我为完成此工作所做的步骤)。

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

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

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

在可操作的示例 ( https://github.com/rails/actioncable-examples ) 中,这是由 /app/channels/application_cable/connection.rb 中的 cookie 定义的。

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

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

祝你好运!

关于websocket - 无法使用 wscat 连接到 Ruby on Rails 5 Beta 上的 ActionCable WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34603745/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com