Cometd过滤通道中特定客户端的数据

时间:2013-03-30 13:48:01

标签: java comet cometd

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

Channel.addDataFilter(DataFilter filter);

这是正确的方法吗?如果有任何样本代码可以实现这一点吗?

1 个答案:

答案 0 :(得分:2)

没有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所做的修改。