Cometd фильтр данных для конкретного клиента в канале
Я проектирую систему, используя комету, где есть общий канал, где публикуются данные. Мне нужно отфильтровать данные, используя некоторые условия, основанные на деталях подписки клиента. Может кто-нибудь сказать, как я могу это сделать? Я думал, что могу сделать это с помощью DataFilter.
Channel.addDataFilter(DataFilter filter);
Это правильный путь? Если да, то какой-нибудь пример кода для этого, пожалуйста?
1 ответ
Здесь нет Channel.addDataFilter(DataFilter)
метод, но вы можете достичь тех же результатов по-другому.
Во-первых, посмотрите на имеющиеся DataFilter
реализации уже доступны.
Тогда достаточно, чтобы вы добавили DataFilterMessageListener
на канал, по которому вы хотите фильтровать данные, и укажите один или несколько DataFilter
к DataFilterMessageListener
,
Вы можете найти пример этого в демоверсиях CometD, поставляемых с дистрибутивом CometD, например, здесь.
Правильный способ добавить DataFilterMessageListener
во время инициализации канала, как это сделано в примере, связанном выше через @Configure
аннотации или эквивалентно через ServerChannel.Initializer
,
Наконец, посмотрите, как сообщения обрабатываются на сервере, из документации: http://docs.cometd.org/reference/. Важно понимать, что изменения, сделанные DataFilter
видны всем подписчикам.