java - Cometd 过滤 channel 中特定客户端的数据

标签 java comet cometd

我正在使用 comet 设计一个系统,其中有一个发布数据的公共(public) channel 。我需要根据客户订阅详细信息使用一些条件来过滤数据。谁能告诉我该怎么做?我想我可以使用 DataFilter 来做到这一点。

Channel.addDataFilter(DataFilter filter);

这是正确的方法吗?如果有的话,有什么示例代码可以实现这一点吗?

最佳答案

没有Channel.addDataFilter(DataFilter)方法,但您可以通过不同的方式获得相同的结果。

首先,看看可用的 DataFilter 实现 already available .

然后,您只需向要过滤数据的 channel 添加一个 DataFilterMessageListener 即可,并为该 DataFilterMessageListener 指定一个或多个 DataFilter >.

您可以在 CometD 发行版附带的 CometD 演示中找到这样的示例,例如 here .

添加 DataFilterMessageListener 的正确方法是在 channel 初始化期间,如上面链接的示例中通过 @Configure 注释或等效地通过 完成的那样ServerChannel.Initializer.

最后,从文档中看一下消息在服务器上是如何处理的:http://docs.cometd.org/reference/#concepts_message_processing 。 重要的是要理解,所有订阅者都可以看到 DataFilter 所做的修改。

关于java - Cometd 过滤 channel 中特定客户端的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15719230/

相关文章:

Erlang、membase 和 cometd

java - 在 Eclipse 中导入 Maven Web 项目,给出红色、*、? .project、.classpath 中的错误

Django 和长轮询

java - EJB 中的 getGenerateKeys

java - 如何在Java中获取不完整一周的第一天/最后一天

java - Android 获取用户位置一次

java - 在 Activity 中调用 fragment 布局

java - 什么java cometd 式框架最成熟健壮?

tomcat - 为什么我需要关闭 cometd 事件才能发送数据? ( Tomcat 6)

java - Spring-MVC,Cometd : Broadcasting without @Listener