java - Spring Websockets:如何验证消息和接收客户端?
问题描述
我已经配置并工作了 Spring WebSockets。客户订阅一个特定的主题(例如/topic/contract/contract_id
),只要有关于该合同/主题的消息,他们就会收到它。
问题是发送到这个主题的某些类型的消息是敏感的,应该只被一些客户端接收,而不是其他客户端。因此,我需要分析发送时正在发送的消息,订阅接收它的客户端,并让它通过某些客户端而不是其他客户端。有没有办法在 Spring WebSockets 中做到这一点?
解决方案
听起来您正在使用 Pub/Sub 模式。我不是 Spring Web Sockets 方面的专家,但这听起来像是在更高抽象而不是数据传输级别上的两难境地。
你可以做两件事:
- 要么一开始就不允许特定的客户端订阅频道,但听起来有些消息是通过发送的,有些则不是。因此,我推荐第二种选择:
- 维护公共(类似群组)和私人频道。
在第一种情况下,只需拦截订阅期间调用的端点或服务,并抛出安全异常或以某种方式通信不允许加入。
在第二种情况下,频道名称有一个唯一的强ID,只有相关人员知道,他们可以收听私人消息。
我有第二个案例的经验,它运行良好,虽然我们没有关键信息,因为它是游戏的一部分,所以只有一个玩家可以收到该消息,而不是整个团队。
推荐阅读
- javascript - 禁用右键单击嵌入元素内的pdf
- c++ - MoveInsertable 和 MoveConstructible 有什么区别?
- node.js - 更改端口在 vuejs 项目中不起作用
- powershell - 在 Powershell 中作为副作用输出
- php - 部署的laravel网站无法上传图片
- python - Pandas - 将匹配的列值与行对齐
- core-nfc - IOS Beta 13 CoreNFC NDEF Lock NFC 标签与 writeLock()
- java - Android键盘没有向上推布局
- java - 在 SVN 存储库中提交更改后如何查找 JAVA 编译错误
- python - 如何将文本分成段落(python)