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 видны всем подписчикам.

Другие вопросы по тегам