You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地环境下如何阻止Rails应用2连接ActionCable WebSocket频道

问题描述

我正在开发两个Rails 7应用。在应用1中创建了ProductsChannel频道用于广播变更,关闭应用1服务器后,启动多日未开发的应用2,发现它反复尝试连接应用1的ProductsChannel,因找不到该频道持续报错,日志如下:

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

我从未给应用2添加过任何频道,已确认应用1服务器未运行,也重启过应用2,但问题依旧。不想每次切换应用都重启电脑,请问如何让应用2停止尝试使用WebSocket?

解决方法
  • 清理浏览器缓存与本地存储:浏览器可能缓存了应用1的ActionCable订阅配置,直接清除应用2对应域名的缓存和本地存储,或用无痕模式打开应用2测试。
  • 检查应用2前端代码:搜索app/javascript目录下是否存在订阅ProductsChannel的代码片段(比如App.cable.subscriptions.create相关逻辑),如果有直接删除。
  • 临时禁用ActionCable:如果应用2暂时不需要WebSocket功能,修改config/cable.yml,将开发环境的适配器设为none:
    development:
      adapter: none
    
  • 重启浏览器:浏览器可能残留了WebSocket连接会话,重启浏览器可清除这些残留进程,比重启电脑更高效。

内容的提问来源于stack exchange,提问作者abarron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:48:22