【问题标题】:Connecting libwebsockets client to rails server with Action Cable使用 Action Cable 将 libwebsockets 客户端连接到 rails 服务器
【发布时间】:2017-08-23 11:25:35
【问题描述】:

我有一个运行在 ruby​​ on rails 5 上的 web 服务器,带有动作电缆,我想使用 libwebsockets 客户端连接到服务器。我无法让客户端通过操作电缆成功连接到服务器。 libwebsockets 客户端永远不会收到成功连接的回调并且总是超时。我的 rails 服务器在 nginx 上运行,在 Ubuntu 机器上瘦,而客户端是在 Visual Studio 2013 中运行的 C++ 控制台应用程序。我启用了 actioncable/thin 兼容性设置,如https://github.com/macournoyer/thin/issues/298 中所述。我也在用redis做action cable。

我已经尝试过记录和调试我能想到的一切。有人可以指出让 libwebsockets 客户端连接的正确方向吗?


更多细节:

我最初将我的 rails 服务器设置为使用 websocket-rails,这与官方 libwebsockets github 存储库中提供的示例客户端一起使用:https://github.com/warmcat/libwebsockets/tree/master/test-server。但是,当尝试连接到使用操作电缆运行的服务器时,同一客户端会超时。我通过实现 javascript 客户端操作电缆代码验证了我在我的 Rails 服务器上正确设置了操作电缆,并且我可以成功连接到操作电缆服务器并订阅频道。根据https://stackoverflow.com/a/36120630/3298688 的回答,我需要libwebsockets 客户端在连接后立即发送订阅消息,但客户端从未连接,因此我无法发送此消息。

我的 rails 日志显示服务器成功接收到客户端的请求。该日志条目块在同一秒内触发了两次,因此存在未知的重复请求;连接到 websocket-rails 时没有发生这种情况。自从我的自定义记录器消息出现以来,我可以看到服务器接受来自客户端的连接。每次客户端超时并尝试重新连接时都会重复此操作。

Started GET "/websocket" for 127.0.0.1 at 2017-03-29 11:33:51 -0700
Started GET "/websocket/" [WebSocket] for 127.0.0.1 at 3/29/2017 11:33 AM
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
****** My custom logger message: ApplicationCable::Connection#connect was called!
Registered connection (Z2lkOi8vcHJvcGVydHktbWF0cml4L0xvZ2luLzk2)

我记录了在 libwebsockets 客户端中触发的所有回调原因,但我从未看到 LWS_CALLBACK_CLIENT_ESTABLISHED 的回调。所有回调都与轮询有关(lws_callback_reasons enum 29+)。我试图从这些回调中发送消息,但实际上没有发送任何数据,可能是因为客户端尚未触发连接的回调。

当我关闭客户端应用程序时,rails 日志中出现以下消息两次,因此看起来 rails 服务器没有任何问题。

Finished "/websocket/" [WebSocket] for 127.0.0.1 at 3/29/2017 11:57 AM

【问题讨论】:

    标签: ruby-on-rails websocket actioncable libwebsockets


    【解决方案1】:

    这不是对原始问题的直接回答,但我只是放弃了 libwebsockets,而是使用Chromium Embedded Framework 在我的应用程序中嵌套了一个不可见的浏览器,这让我可以从我的 Rails 应用程序中加载一个网页并以这种方式传输数据。设置起来仍然很痛苦,但我没有遇到任何奇怪的连接问题,因为我能够使用内置的 javascript for action cable。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 2020-09-13
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多