【问题标题】:ActionCable: One channel per userActionCable:每个用户一个频道
【发布时间】:2023-03-27 18:25:02
【问题描述】:

我正在为我的 rails 应用程序处理通知。有 User 模型和控制器,并且 Like 模型关联到 User 与 User 有许多 Likes 关联。

这个想法是,如果用户喜欢另一个用户的个人资料,个人资料的所有者将收到实时通知。

这是我理解 ActionCable 的应用程序。我研究了cable api,pub-sub 对我来说是新的。我能够通过单一渠道进行成功的沟通,并且还成功使用了authorization。但是,我仍然不明白如何为每个用户使用单个频道(动态生成的频道),以便发布给一个用户的消息不会发送给另一个用户。

动态通道可以吗?

或者,是否有其他方式可以通过单一渠道满足所有用户的需求

【问题讨论】:

  • 动态生成的频道?你是什​​么意思?与任何用户的单独连接?
  • @Зелёный 我只是想是否有任何标准方法可以做到这一点。在ApplicationCable::Channel 中,可以为生成的频道名称提供像stream_from "x_channel_#{user_id}" 这样的字符串插值,也可以用于广播ActionCable.server.broadcast "x_channel_#{user_id}", message: "Received"
  • @Зелёный 是的,为每个用户单独连接
  • 单独连接 - 这不是一个好习惯。
  • @Зелёный 请提供方法

标签: ruby-on-rails redis ruby-on-rails-5 actioncable


【解决方案1】:

解决方案实际上很简单,但 ActionCable 中引入的一些新术语使其混乱。顺便说一下,我是这样解决的。

我为不同的用户使用单个频道但多个流。 这是 ActionCable documentation link,它清楚地说明了一个非常相同的场景。我之前浏览过文档,但不知怎的,第一眼看不懂。

很抱歉没有提供任何直接代码,我认为文档会完整地解释它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2021-08-22
    相关资源
    最近更新 更多