Предотвращение локального приема опубликованных сообщений - PullRequest
1 голос
/ 28 февраля 2012

Настройка:

Один класс сервера (расширение AbstractService) Один клиент cometd (пользовательская реализация C, но не имеет значения для этого вопроса)

Небольшой вопрос: если мой класс сервера публикуется вэто собственный канал, вызывается функция handleMessage.В общем, я на самом деле не желаю этого, но я могу обойти это (серверу не нужно знать, когда сервер отправляет сообщения).Могу ли я использовать ServerSession.deliver вместо публикации?

Реальный вопрос: на моем клиенте я отправляю сообщение на сервер по каналу класса сервера.Вызывается функция handleMessage сервера, однако сообщение также отправляется обратно исходному клиенту.Есть ли способ настроить сервер таким образом, чтобы сообщения не отправлялись обратно исходному клиенту?

Я видел класс Extension, но, похоже, он работает всего на один уровень выше, чем отправка сообщений отдельным клиентам (если я убью)сообщение здесь, оно не отправляется ни одному клиенту, включая сервер).

Есть идеи?Заранее спасибо!

1 Ответ

1 голос
/ 28 февраля 2012

Если сообщение отправлено обратно исходному отправителю, то оно, вероятно, подписано на этот канал.

Вы не указали название канала, но вы должны понимать разницу между широковещательными каналами и сервисными каналами, см. здесь .

Если ваш клиент публикует данные на служебном канале, сообщение поступает на сервер и не транслируется подписчикам, а если ваш клиент публикует на широковещательном канале, сервер передает его подписчикам (среди которых ваш клиент), так что вероятно, почему ваш клиент получает сообщение обратно.

ServerSession.deliver () может использоваться для доставки сообщений (по любому каналу) конкретным клиентам (в отличие от широковещательной рассылки всем подписчикам).

Если ваш клиент не нуждается в трансляции сообщения, то обычно лучшим решением является использование служебного канала.

...