【发布时间】:2021-12-15 23:17:28
【问题描述】:
我正在尝试设置服务器端 websocket 客户端,以便能够使用来自现有 3rd 方 websockets 服务的消息。
我需要能够:
- 继续运行现有应用,主要由后端 api 服务组成
- 使用来自第 3 方 websocket 服务器的消息
- 在现有 sidekiq 工作人员中使用这些消息中的数据
我使用了来自faye web sockets 的客户端配置,并遵循了heroku/websockets 示例here,无论是否在app.rb 中使用中间件配置。我可以连接到 websocket 并毫无问题地接收消息,但这似乎锁定了其他所有内容,并且在部署到 heroku 时应用程序崩溃了。
当在 app.rb 中配置为中间件时,错误是:
Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
如果没有在那里配置,应用程序甚至不会尝试启动,因为 EM 会接管。
我最终将 EM 代码从上面的一个 Sidekiq 工作程序内部的 faye web sockets 链接中移动,这成功了。但这会奏效吗? sidekiq 工作人员可以无限期运行还是最终会被终止?我找不到任何严格使用服务器端客户端的示例,因此我不知道这种解决方法是否可持续。
对解决此问题的最佳方法有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby websocket sidekiq faye