我正在设计一个使用彗星的系统,其中有一个公共通道可以发布数据。我需要根据客户订阅详细信息使用某些条件来过滤数据。任何人都可以告诉我怎么做到这一点?我以为我可以使用DataFilter来做到这一点。
Channel.addDataFilter(DataFilter filter);
这是正确的方法吗?如果有任何样本代码可以实现这一点吗?
答案 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
所做的修改。