我正在设计一个使用彗星的系统,该系统有一个公共通道来发布数据。我需要使用基于客户端订阅详细信息的某些条件来过滤数据。谁能告诉我该怎么做?我以为可以使用DataFilter做到这一点。

Channel.addDataFilter(DataFilter filter);


这是正确的方法吗?如果是这样,请提供任何示例代码来实现这一目标?

最佳答案

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

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

然后,只需在要过滤数据的通道上添加DataFilterMessageListener,并为DataFilter指定一个或多个DataFilterMessageListener就足够了。

您可以在CometD发行版随附的CometD演示中找到此示例,例如here

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

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

09-26 22:51
查看更多