Google Channel API отправляет сообщение всем клиентам

Я создал работающую точку доступа Google Channel и теперь хочу отправить сообщение всем клиентам.

У меня есть два сервлета. Первый создает канал и сообщает клиентам userid и token. Второй вызывается http post и должен отправить сообщение.

Чтобы отправить сообщение клиенту, я использую:

channelService.sendMessage(new ChannelMessage(channelUserId, "This is a server message!"));

Это отправляет сообщение только одному клиенту. Как я мог отправить это всем?

Должен ли я хранить каждый идентификатор, который я использую для создания канала, и отправлять сообщение для каждого идентификатора? Как я могу передать идентификаторы второму сервлету?


person Andre Hofmeister    schedule 29.09.2012    source источник


Ответы (2)


Используя Channel API, невозможно создать один канал, а затем иметь много подписчиков на него. Сервер создает уникальный канал для отдельных клиентов JavaScript, поэтому, если у вас такой же Client ID сообщения будут получать только один.

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

Если такой подход звучит пугающе и беспорядочно, рассмотрите возможность использования PubNub для ваших push-уведомлений, где вы можете легко создать один канал и много подписчиков. Заставить его работать на Google App Engine не так уж сложно, так как они поддерживают практически любую платформу или устройство.

person Lipis    schedule 29.09.2012

Я знаю, что это старый вопрос, но я только что закончил проект с открытым исходным кодом, который использует API канала для реализации модели публикации/подписки, т.е. вы можете иметь несколько пользователей, подписавшихся на одну тему, и тогда все эти подписчики будут уведомлены, когда любой публикует сообщение в тему. Он также имеет некоторые приятные функции, такие как автоматическое сохранение сообщений, если это необходимо, и «уведомления о возврате», когда подписчик может быть уведомлен всякий раз, когда ДРУГИЕ подписчики получают это сообщение. См. https://github.com/adevine/gaewebpubsub#gae-web-pubsub. Под лицензией Apache 2.0.

person adevine    schedule 06.12.2012