我正在开发一个允许用户相互发送内部消息的应用程序。
我会告诉你当前的设置是什么,请帮助我弄清楚如何使它工作,或者建议另一个角度。我们将 BlazeDS 与 Spring 一起使用。
- 用户 A 监听消息主题 Chat.A 上的消息
- 用户 B 监听消息主题 Chat.B 上的消息
- 两个用户都在主题 Chat.System 上侦听全局消息(系统范围的消息)
所以我们有一个用于个人消息主题的多主题消费者和一个用于全局消息主题的消费者。
所以我有几个问题:
- 是作为两个不同的消费者(共享相同的处理函数)还是作为一个多主题消费者更好?
- 如何检查客户端 A 实际上是听 Chat.A 的人,而不仅仅是知道如何编写 BlazeDS 客户端的其他人?我们有 Spring Security,但是如果他们的用户名(从安全上下文中提取)与他们请求的子主题不匹配,我该如何监听订阅请求并阻止它们?
我也读过选择器。好吧,这看起来很有希望,但是,当消费者使用该消费者时,我如何检查该selector="for == A || for == System
消费者是否属于已验证为该“for”用户的客户端。
- 选择器如何与子主题进行比较/对比?他们每个人的最佳情况是什么?