如何在本地环境中为其他Rails应用禁用Rails电缆WebSocket通道

t1qtbnec  于 2023-10-20  发布在  其他
关注(0)|答案(2)|浏览(114)

我正在开发两个不同的Rails应用程序。在App 1上,我创建了一个名为“ProductsChannel”的频道来广播更改。后来我关闭了应用程序1的服务器,并为应用程序2旋转了服务器,我已经有几天没有工作了。但现在它试图连接到我的“产品频道”从应用程序1。它找不到它,所以它重复地告诉我它找不到频道。日志在下面。
如何阻止App 2尝试使用WebSockets?我从来没有添加任何渠道的应用程序2,所以不知道它是如何被拉到这一点。

  1. Started GET "/cable" for ::1 at 2023-09-21 14:57:20 +0200
  2. ActiveRecord::SchemaMigration Pluck (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
  3. Started GET "/cable" [WebSocket] for ::1 at 2023-09-21 14:57:20 +0200
  4. Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
  5. Started GET "/cable" for ::1 at 2023-09-21 14:57:20 +0200
  6. Started GET "/cable" [WebSocket] for ::1 at 2023-09-21 14:57:20 +0200
  7. Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
  8. Started GET "/cable" for ::1 at 2023-09-21 14:57:20 +0200
  9. Started GET "/cable" [WebSocket] for ::1 at 2023-09-21 14:57:20 +0200
  10. Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
  11. Subscription class not found: "ProductsChannel"
  12. Subscription class not found: "ProductsChannel"
  13. Subscription class not found: "ProductsChannel"
  14. ...

这两个应用程序都在Rails 7上。
我已经确定App 1的服务器没有运行。我尝试关闭App 2并重新启动。
我怀疑重启笔记本电脑可能会解决这个问题,但我不应该每次切换应用程序时都重启整个机器。

72qzrwbm

72qzrwbm1#

由于启用的应用程序的日志包含对websockets端点的请求,甚至包含无法找到禁用应用程序的通道的记录-这意味着某些客户端仍然连接到您的服务器并发送这些请求。
在这方面,第一个想法是打开一个浏览器选项卡,该选项卡在与当前后端相同的端口上订阅了WebSocket通道
要排除此行为,您可以关闭此类选项卡,或者为不同的应用程序使用不同的端口

krugob8w

krugob8w2#

感谢梅奇尼科夫在评论中指出了我的菜鸟错误。我有一个浏览器标签打开与应用程序1.关闭此选项卡解决了问题。

相关问题