繁体   English   中英

Spring-Flex BlazeDs多用户+全局聊天消息

[英]Spring-Flex BlazeDs Multi-User + Global Chat Messaging

我正在开发一个允许用户向另一个用户发送内部消息的应用程序。

我将告诉您当前的设置是什么,请帮助我弄清楚如何使其工作或建议采取另一个角度。 我们在Spring中使用BlazeDS。

  • 用户A侦听有关消息主题Chat.A的消息
  • 用户B侦听有关消息主题Chat.B的消息
  • 两个用户都收听主题Chat.System上的全局消息(系统范围的消息)。

因此,对于个人消息主题,我们有一个多主题的使用者,对于全局消息主题,我们有一个多主题的使用者。

所以我有几个问题:

  1. 最好是作为两个不同的使用者(共享相同的处理程序功能)还是作为一个多主题使用者来执行此操作?
  2. 如何检查客户端A实际上是在听Chat.A的客户端,而不仅仅是其他知道如何编写BlazeDS客户端的客户端? 我们已经安装了Spring Security,但是如果他们的用户名(从安全上下文中拉出)与他们请求的子主题不匹配,我该如何侦听订阅请求并阻止它们呢?

我还阅读了有关选择器的信息。 好了,这看起来很有希望,但是,当消费者使用selector="for == A || for == System时,我如何检查该消费者属于已认证为“ for”用户的客户端的系统。

  1. 选择器如何与子主题进行比较/对比? 每个人的最佳情况是什么?

选择器基本上是一个表达式,您可以使用它过滤将通过您的使用者发送的消息。 根据文档,它使用SQL 92条件表达式语法:

http://livedocs.adobe.com/blazeds/1/blazeds_devguide/help.html?content=messaging_6.html

子主题是选择器的一种特殊情况,它过滤掉“ DSSubtopic”标头与提供的值不匹配的消息。

理解这两者的重要之处在于, 客户端确定向其发送了哪些消息,因此,不能完全依赖于它的安全性。

要基于经过身份验证的用户身份对邮件进行基于服务器的安全过滤,请在此处查看我对相关问题的回答:

Flex邮件安全

至于多个消费者与MultiTopicConsumer,不确定那里。 它们都将使用相同的基础ChannelSet,因此它不应有太大的性能差异。 我认为这主要是一个简单的事件处理程序来响应来自MultiTopicConsumer的所有消息是否方便,或者为每个消费者使用单独的事件处理程序是否更容易。

我通常为此使用子主题。 但是,如果这样做,请确保禁用对通配符子主题的订阅

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM