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

时间:2009-09-26 15:23:51

标签: flex spring blazeds

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

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

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

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

我有几个问题:

  1. 两个人做得更好 不同的消费者(分享 相同的处理函数)或作为一个, 多主题消费者?
  2. 如何检查客户端A实际上是在监听Chat.A的人,而不仅仅是知道如何编写BlazeDS客户端的其他人?我们已经安装了Spring Security,但是如果他们的用户名(从安全上下文中提取)与他们请求的子主题不匹配,我该如何监听订阅请求并阻止他们?
  3. 我也读过关于选择器的内容。好吧,这看起来很有希望,但是,当消费者使用selector="for == A || for == System消费者属于已经认证为“for”用户的客户端时,我该如何检查。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

要理解这两个问题,重要的是客户端确定将哪些消息发送给它,因此不能完全依赖它来保证安全。

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

Flex Messaging Security

就多个消费者与MultiTopicConsumer而言,不确定那里。他们都将使用相同的底层ChannelSet,因此它不应该有很大的性能差异。我认为这主要是一个问题,即让一个事件处理程序响应来自MultiTopicConsumer的所有消息是否方便,或者是否更容易为每个Consumer提供单独的事件处理程序。

答案 1 :(得分:0)

我通常会使用子主题。但如果你这样做,请确保disable subscriptions to wildcard subtopics