将 ActionCable 发送给特定用户

2024-04-08

我有以下代码,它在我的 Rails 应用程序中发送 ActionCable 广播:ActionCable.server.broadcast 'notification_channel', notification: 'Test message'

连接如下所示:

module ApplicationCable
  class Connection < ActionCable::Connection::Base

    identified_by :current_user

    def connect
      self.current_user = find_verified_user
    end

    def session
      cookies.encrypted[Rails.application.config.session_options[:key]]
    end

    protected

    def find_verified_user
      User.find_by(id: session['user_id'])
    end

  end
end

但是,所有登录该应用程序的用户都会收到它。这identified_by仅确保登录用户可以连接到该频道,但不限制哪些用户可以获得广播。

有没有办法只向特定用户发送广播?

我能想到的唯一方法是:

ActionCable.server.broadcast 'notification_channel', notification: 'Test message' if current_user = User.find_by(id: 1)

哪里的1是我要定位的用户的 ID。


对于特定于用户的通知,我发现拥有一个基于当前用户的订阅的 UserChannel 很有用:

class UserChannel < ApplicationCable::Channel
  def subscribed
    stream_for current_user
  end
end

这样 ActionCable 就会为每个用户创建一个单独的通道,您可以根据用户对象使用如下命令:

user = User.find(params[:id])
UserChannel.broadcast_to(user, { notification: 'Test message' })

这样该频道就可以处理所有特定于用户的广播。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 ActionCable 发送给特定用户 的相关文章

随机推荐

  • Zurb Foundation 5:网格列堆叠

    我是基础新手 我只知道如何使用网格的基本概念 I have these 3 columns that need to be stacked see mobile image when viewed on mobile small scree
  • 在 Dart 中不继承静态变量的理由是什么?

    In Dart 如果一个类扩展了另一个类 则扩展类继承所有超类的非静态变量 但不继承其任何静态变量 例如 class TestUpper static final String up super String upup 10 class T
  • “DOM 0 方式”检索 HTML 属性值

    jQuery 有一个attr 检索给定 HTML 属性值的方法 例如 var foo document getElementById foo foo attr id 但是 从性能角度来看 这并不是最佳选择 因为必须创建 jQuery 对象才
  • 在 iOS 应用程序中以编程方式获取崩溃报告

    我想在我的应用程序内访问我的应用程序的崩溃报告 并且我需要将崩溃报告发送到服务器 我在 google 中搜索 找不到任何可以帮助我实现目的的 API 但我发现有一些开源项目 例如 QuincyKit plcrashreporter 用于获取
  • Dart 内部的 wait 到底做了什么?

    我正在开发一个需要使用本地存储的颤振应用程序 由于Android中的文档目录路径将在Future中给出 因此每次我想使用该路径时 我都必须检查future是否完成 代码可能类似于下面 class DataStructure late Fut
  • 使用应用程序脚本更新多个选项卡

    我有一张名为 Main Sheet 的工作表 Col B 中的每个列值都有多个选项卡 东 中 每周都会有新记录添加到主表中 我想要一个谷歌应用程序脚本函数将新行从 Main Sheet 选项卡插入到相应的选项卡 输入表 主表 输出表东方 中
  • 在 R 中使用 knitr 和 markdown 自定义 CSS

    我发现了这个很棒的教程 介绍如何修改在 Rstudio 中使用 markdown 和 knit 创建的 HTML 报告的 css 格式 帖子可以找到here http nsaunders wordpress com 2012 08 27 c
  • Html.BeginForm 外部的提交按钮

    在我的页面上 我有来自母版页的工具栏和一些输入字段 所有输入字段都在标签内form和标签外部的工具栏form 按下外部按钮后是否可以提交表单form tag 请建议 亚历山大 你可以用 JavaScript 来做到这一点
  • ems和像素之间有什么关系?

    em 的像素值是多少 10em px em 和 px 之间没有特定的关系 它是根据每个字体的 m 字符的宽度计算的
  • 添加加载指示器/进度条到 Phonegap Android 闪屏

    我有一个 PhoneGap 1 4 1 jQueryMobile 1 0 1 Android 项目 它显示 res drawable splash png 很好 一旦加载 WebView 闪屏就会消失 我想在启动画面中添加某种进度指示器百分
  • Android Studio ML 套件无法加载 OCR 模块

    我正在开发一个涉及 ML 套件的 Android 应用程序 我经历了tutorial https firebase google com docs android setup了解如何设置 Android Studio 以与 Firebase
  • 在第 n 次出现后删除字符串的其余部分

    我有以下字符串 a this is a string 我希望删除第三个 之后的所有内容符号 以便它返回 trim a gt gt gt this is a 而没有第三个 的字符串应该返回自身 这个答案 如何删除python中特定字符之后的所
  • 将 XAML 转换为 FlowDocument 以在 WPF 中的 RichTextBox 中显示

    我有一些 HTML 我正在使用 Microsoft 提供的库将其转换为 XAML string t HtmlToXamlConverter ConvertHtmlToXaml mail HtmlDataString true 现在 从如何将
  • RuntimeException在android中导致ANR而不是崩溃

    我两次都收到 ANR throw new NullPointerException random null pointer and while true 仅在异常部分VM实际关闭 D AndroidRuntime 关闭VM 第二个问题是 如
  • 角度、材料侧导航和粘性工具栏

    我正在尝试 Material Side nav 和 Angular 6 7 我想要实现的目标显示在接下来的两张图片中 具有折叠侧面导航的应用程序 该应用程序具有扩展的侧面导航 简而言之 可以通过按钮打开和关闭的侧面导航 a fixed内容上
  • JTextField setActionCommand() 的目的是什么[如何以编程方式访问它以查找事件发生在哪个单元格?]

    原始帖子后几个月编辑 这个问题的动机是需要知道单击按钮时 11x11 网格 JTextField 数组 的哪个单元格处于活动状态 我问了错误的问题并选择了错误的工具 setActionCommand 尽管它当时通过字符串操作起作用 我最终选
  • 何时在 .NET 中使用 Array() 而不是 Generic.Lists

    在 NET 中什么时候适合使用数组而不是通用列表 T 我一直很难看到数组比通用列表提供的任何好处 但感觉我可能错过了一些东西 性能是让我印象深刻的一件事 因为它是一个潜在的瓶颈 Thanks 当您使用固定数量的给定类型的对象时 没有必要承受
  • Paypal 沙盒显示错误

    单击 继续 按钮登录后 Paypal 沙箱显示错误 Error no template specified at engine x ebay cronus software service nodes ENVaqqittlg2x28 uni
  • Java JProgressBar 使用图像

    我正在用 Java 制作一个游戏 并且我正在使用JProgressBar为了健康吧 我想使用图像 而不是颜色 JProgressBar 但我一直没能做到 我尝试过使用绘画方法 paintComponent方法 创建一个新类 但它不起作用 有
  • 将 ActionCable 发送给特定用户

    我有以下代码 它在我的 Rails 应用程序中发送 ActionCable 广播 ActionCable server broadcast notification channel notification Test message 连接如