我正在尝试为flex应用程序创建一个模块,我想向客户端发送通知。我一直在寻找BlazeDS消息服务来向客户推送通知,但我希望能够向某些客户发送某些更新。 Flex通知框架似乎不允许这样做 - 例如,如果我们在消息中有一个字段,其值为用户的用户ID,理论上任何客户端都可以订阅任何给定用户ID的所有消息,并且没有验证服务器端,以确保已订阅的客户端以该用户ID登录。
我在这里错过了什么,或者是在客户端编写我自己的轮询机制的最佳方法?
答案 0 :(得分:1)
API中确实有这样的解决方案。第一步是编写一个扩展FlexClientOutboundQueueProcessor类的类。您需要覆盖一个方法:
public void add(List outboundQueue, Message message);
基本上你需要做的就是写一些逻辑来确定你是否应该进行以下调用:
outboundQueue.add(message)
简单地说,如果您不将消息添加到队列,则不会将消息推送到客户端。本课程中另一个重要的方法是:
FlexClient getFlexClient()
您可以使用它来获取关联的FlexSession以及最终可能存在于您的应用中的身份验证信息。
完成此操作后,您只需要使用适当的通道注册处理器。只需在“channel-definition”元素的“properties”元素中添加此元素:
<flex-client-outbound-queue-processor class="com.foo.YourProcessor"/>
我相信您也可以为队列处理器指定嵌套的“properties”元素,但我不相信它是必需的。
答案 1 :(得分:1)
只要您disable wildcard subscriptions,就可以使用子主题。