我想在我的rails 6应用程序中使用action cable和ruby_graphql gem。我注意到当我简单地加上require "action_cable/engine"
到我的应用程序.rb和Connection < ActionCable::Connection::Base
,Channel < ActionCable::Channel::Base
等所需的代码
WebSocket在/cable
下可用,即使我没有添加mount ActionCable.server => '/cable'
我不明白为什么/cable
路由会在没有挂载到路由文件中的情况下变得可用。我还注意到,我的应用程序的资源消耗(特别是CPU)随着简单的`require“action_cable/engine”而增加。我本以为只有在我骑上它的时候才会发生这种情况
任何帮助和洞察这将不胜感激
(我确保在更改之间重新启动所有服务器,并检查生成的路由,以查看是否不包括/cable-然后我在开发和生产中使用新的WebSocket('wss://my-domain.test/cable')测试了websocket,两次都成功升级到websocket,状态代码为101)
1条答案
按热度按时间ha5z0ras1#
看看你正在
require
-ing的文件:action_cable/engine更具体地说,下面的代码部分
字符串
仅仅需要引擎的操作就创建了一个初始化器,该初始化器将路由添加到应用程序路由的顶部。
几行之后,它也启动了服务器
型
这就是为什么路由在那里,action_cable似乎只是开箱即用,即使没有显式启动任何东西。它只发生在
require "action_cable/engine"
内部