Отношение токена канала Google App Engine и идентификатора клиента - PullRequest
1 голос
/ 01 апреля 2012

В документации по Google App Engine для Channel API указано, что «только один клиент может одновременно подключаться к каналу с использованием определенного идентификатора клиента».

В противоположность этому, когда я пытаюсь создать канал с тем же идентификатором клиента, новый канал используется. Другими словами, когда я десять раз вызываю api созданного канала для ClientID "user_one" channelService.createChannel("user_one");, будет создано 10 разных каналов с 10 разными строками токенов, а когда я отправлю сообщение на user_one channelService.sendMessage(new ChannelMessage("user_one", message));, все десять клиентов на разных устройствах, получили бы сообщение!

Как бы вы описали этот сценарий? Как можно извлечь выгоду из этого механизма (один clientID с другим каналом, все получают одно и то же сообщение)? как предотвратить создание нескольких каналов для одного пользователя?

1 Ответ

2 голосов
/ 01 апреля 2012

Документация не полная, но она довольно хорошо описывает ее намерения.В нем говорится:

Только один клиент одновременно может подключиться к каналу с использованием определенного идентификатора клиента, поэтому приложение не может использовать идентификатор клиента для разветвления.Другими словами, невозможно создать центральный идентификатор клиента для подключений к нескольким клиентам (например, вы не можете создать идентификатор клиента для чего-то вроде канала с «глобальными высокими показателями» и использовать его для трансляции в несколько игрклиенты.)

Вы должны следить за количеством каналов, которые вы создаете для каждого ClientID.Из моего опыта, то, что вы описываете, работает, но не надежно.Самый новый канал, созданный с помощью ClientID, работает, более старые, иногда работают, иногда не получают сообщений.

Обратите внимание, что если вы пытаетесь сделать это на dev_appserver, все клиенты получают сообщения, но нана реальном сервере это поведение не то же самое.

...