ActionCable:为什么要把广播放在一个单独的工作中?对于表格,为什么不从控制器广播?

ActionCable: Why put broadcasts in a separate job? For forms why not broadcast from controllers?

大部分教程都是 DHH 一年多前发布的示例应用程序的略微改动版本。他们中的大多数人都有将广播转为工作的习惯。但是 A) 这不是 Redis 的意义所在吗? B) 因为我正在使用 Delayed::Job 直接广播不是更快吗?

创建模型或通过 ActionCable 提交表单时,它似乎没有 CSRF 保护。主动限制来源是否消除了 protect_from_forgery 的需要? gem 的自述文件中有一个 link 添加签名 cookie 的教程,我还看到另一个教程 finds_verified_user 来自 warden['env'].user。这是否解决了 protect_from_forgery 解决的问题?

如果不是:我想我可以像往常一样将表单提交给控制器,然后直接从控制器广播给所有订阅的用户?但是因为它看起来很简单,但我在任何地方都没有看到它'我担心有一些原因。有吗?

为了能够回答这个问题,这里有一个 Heroku 教程,它使用了我想要使用的相同架构思想。因此,从设计的角度来看,它似乎不再是一种反模式

https://blog.heroku.com/real_time_rails_implementing_websockets_in_rails_5_with_action_cable#step-2-broadcast-to-the-channel