Spring Boot - Websockets - 如何查看订阅者

2024-03-10

我正在开发一个 websocket 应用程序,我试图让一个 websocket 提供信息,然后输出给端点的订阅者。我已经弄清楚了,但我想知道是否有办法查看订阅了哪些订阅者以及订阅了什么路径?

这是我正在处理的代码示例。

@Autowired
private SimpMessagingTemplate template;

@MessageMapping("/{companyId}/{departmentId}")
@SendTo("/{companyId}/{departmentId}")
public void companyInformation(@DestinationVariable String companyId, @DestinationVariable String departmentId, CompanyMessage companyMessage){

    String destination = "/" + companyId + "/" + departmentId;
    template.convertAndSend(
          destination, processCompanyMessage(companyMessage, departmentId));
}

这个想法是信息海报发送companyMessage反对@MessageMapping端点,即companyId and departmentId从此映射中检索。

然后根据以下内容处理该消息departmentId是并且已发布到拥有活跃订阅者的每个部门@SendTo path.

e.g.

有 3 个 websocket 订阅者,/smallCompany/booking, /smallCompany/sales, /smallCompany/inventory.
@MessageMapping收到一条消息/smallCompany/sales。该方法基于departmentId并向每个订阅者发布相同的内容/{companyId},即使/{departmentId}不同。

如果这可能的话,任何想法,如果不可能,任何推动我朝正确方向发展的想法都会很棒。


我知道现在回答已经太晚了!但我现在看到这个问题了! 因此,为了指导其他人看到这个问题,我应该说:

您有几种解决方案:

1-Simp用户注册表:

@Autowired private SimpUserRegistry simpUserRegistry;

public Set<SimpUser> getUsers() { 
    return simpUserRegistry.getUsers();
}

检查此链接:有 Spring WebSocketSession 存储库吗? https://stackoverflow.com/questions/35729013/is-there-a-spring-websocketsession-repository

2- 全局列表:

您肯定已经在 Spring Boot 中配置了 Web 套接字,因此,您可能有一个来自 WebSocketMessageBrokerConfigurer 的派生类,并覆盖 configureClientInboundChannel 来调用 setInterceptors...

您应该实现从 ChannelInterceptorAdapter 派生的自定义拦截器并重写 preSend 以访问 MessageHeaderAccessor.getAccessor(...).command
这些命令在 StompCommand 中定义(CONNECT、DISCONNECT、SUBSCRIBE、UNSUBSCRIBE,...)

通过使用 StompCommand.SUBSCRIBE/UNSUBSCRIBE 检查 accessor.command,您可以创建并同步订阅者的全局静态列表,并在您需要的任何地方使用它。

3-其他解决方案:

检查此链接:
如何使用 Spring 4 在我的 webSocket 服务器中捕获订阅事件 https://stackoverflow.com/questions/27818269/how-to-capture-subscribe-event-in-my-websocket-server-with-spring-4/27836885

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

Spring Boot - Websockets - 如何查看订阅者 的相关文章

随机推荐

  • 在rabbitmq autoconfig connectionfactory bean上设置heartbeat属性

    我应该如何在rabbitmq spring中的CachingConnectionFactory bean上设置heartbeat属性 这是在云铸造环境中 因此 应用程序将通过清单文件使用服务绑定 并且我没有代理主机名 在我的SimpleMe
  • X-UA 兼容的 http 标头实际上适用于 IE9 吗?

    我正在开发一个可以作为 Intranet 站点托管的 Web 产品 我正在尝试找到一种编程方法来防止 IE9 滑入 IE9 兼容性视图浏览器模式 即使 在兼容性视图中显示 Intranet 站点 可能已打开 我正在使用这个 html 页面进
  • 有没有办法将 kptr_restrict 设置为 0?

    我目前在运行 linux perf 时遇到问题 主要是因为 proc sys kernel kptr restrict当前设置为 1 但是 如果我尝试 proc sys kernel kptr restrict通过回显 0 来如下 echo
  • 处理尝试破解网站的最佳方法

    一点背景 我为一个非营利组织运营该网站 在发现死链接后 我在网站上运行了链接检查器 并发现了更多链接 因此 我实现了一个自定义 404 页面来记录所有失败的链接 这使我能够修复损坏的链接 并提醒链接到我们的其他人他们的链接已损坏 它很快就得
  • R 矩阵/data.frame索引选择真的很慢

    我正在选择 data frame 的子集g raw 像这样 g raw lt read table gfile sep header F row names 1 snps intersect row names na omit csnp r
  • 与 Julia 实时绘图

    我正在尝试绘制一个与 Julia 一起实时演化的函数 为此 当我尝试完全应用给定的示例时 我发现 GR 包可以在 Julia 中使用here https pgi jcns fz juelich de pub doc anim html im
  • 如果我需要自定义 getter/setter,我可以省略字段创建吗?

    我可以写出如此漂亮简单的代码 public int Delta get private set 现在我只想添加一个电话OnPropertyChanged Delta 这是我知道如何做到这一点的唯一方法 public int Delta ge
  • 并排绘制 gList

    我有 2 个 gList 对象 网格 当我这样做时 它们可以很好地绘制 grid draw plot1 grid draw plot2 但我希望这些在 pdf 中并排显示 就像是 pdf test pdf par mfrow c 1 2 p
  • 如何更改列表视图的文本大小

    我正在使用 List Activity 从 SQLITE 检索数据 但我无法设置列表视图的字体大小 请帮我 public class CartList extends ListActivity private ArrayList
  • PDF Box 由于其中包含 JBIG2 图像而生成空白图像

    首先让我向您介绍一下我的项目 我有一个 pdf 文件 需要将其转换为图像 一页一张图像 PDFBoxAPI 并将所有这些图像写入新的 pdf 中PDFBoxAPI 本身 基本上 将 pdf 转换为 pdf 我们称之为 PDF 转码 对于某些
  • Qt QImage 到 QPixmap 转换丢失 UI 的颜色信息

    我正在尝试更新主 Qt UI 中 QLabel 上的 QPixmap 调用以下插槽来使用 newImage 变量 QImage 执行此操作 因为它来自不同的线程 QImage 使用 ConvertFromImage 转换为 someImag
  • 如何将不带空格的文本拆分为单词列表

    Input tableapplechairtablecupboard 很多话 将此类文本拆分为单词列表并获得的有效算法是什么 Output table apple chair table cupboard cup board 首先想到的是遍
  • 如何使用 cleanup 属性初始化变量?

    有没有办法用以下方式初始化变量cleanup编译器属性 或者我必须在声明变量后设置值吗 我试过把cleanup前面的属性 malloc 10 就像下面和后面的例子一样 malloc 10 但都不能编译 include
  • mysql通过有来计数组

    我有这张表 Movies ID Genre 一部电影可以有多种类型 因此 ID 并不特定于某个类型 而是多对多的关系 我想要一个查询来查找恰好有 4 种类型的电影总数 我当前的查询是 SELECT COUNT FROM Movies GRO
  • 使用 Plugman 创建 Ionic 插件

    我是 Ionic 和 Cordova 的新手 我需要使用 Cordova 创建一个 ionic 插件并将其集成到示例 ionic 应用程序中 我遵循的步骤是 使用plugman创建一个简单的离子插件 plugman create name
  • WPF - 如何在父级鼠标悬停时更改子级样式

    我有一个StackPanel 1 与另一个StackPanel 2 里面 SP 2 应隐藏 不透明度 0 直到 SP 1 悬停为止 鼠标悬停应将 SP2 的样式更改为不透明度 100 我尝试在 StackPanel 资源中定义样式 然后使用
  • 标签替换换行符[重复]

    这个问题在这里已经有答案了 我有一个带有文本区域的表单 我想将输入中的换行符更改为段落 使用 p 标签 我正在使用爆炸和内爆来替换 n with p p 但是如果你连续有两个换行符 你最终会得到 p p p p 我试图使用 foreach
  • Asp.net MVC 中的 TimeSpan 和“24:00”解析错误

    我的 Web 应用程序中有一个模式对话框 用户可以在其中输入 00 00 到 24 00 之间的时间范围 范围滑块用于选择该范围 一切都按预期工作 除了每当用户将正确的范围句柄设置为具有值 24 00 时 默认模型绑定器无法解析此值Time
  • 对于不成功的 Try() 方法,输出值应该设置为多少?

    我正在实现 TryParse string s Out object result 方法 如果解析失败 我不想触及 out 参数 因此之前的任何结果都将保持不变 但 VS2k8 不让我这么做 无论如何 我都必须设置 out 对象的值 我应该
  • Spring Boot - Websockets - 如何查看订阅者

    我正在开发一个 websocket 应用程序 我试图让一个 websocket 提供信息 然后输出给端点的订阅者 我已经弄清楚了 但我想知道是否有办法查看订阅了哪些订阅者以及订阅了什么路径 这是我正在处理的代码示例 Autowired pr