我正在使用 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/