2012-04-01 91 views
1

在Google API for Channel API文檔中,聲明「一次只有一個客戶端可以使用給定的客戶端ID連接到某個通道」。Google App Engine通道令牌和客戶端ID關係

相反,當我嘗試創建具有相同客戶端ID的頻道時,會消耗一個新頻道。換句話說,當我爲ClientID「user_one」channelService.createChannel("user_one");創建10次通道時,會創建10個具有10個不同令牌字符串的不同通道,並且當我向「user_one」channelService.sendMessage(new ChannelMessage("user_one", message));發送消息時,所有10個客戶端不同的設備,會收到消息!

你會如何描述這種情況?如何從這種機制中受益(一個clientID具有不同的渠道,都收到相同的消息)?如何防止它爲單個用戶創建多個渠道?

回答

2

該文檔不完整,但它描述其意圖很好。它說:

一次只有一個客戶端可以使用給定的客戶端ID連接到一個通道,因此應用程序無法使用客戶端ID進行扇出。換句話說,創建一個用於連接到多個客戶端的中央客戶端ID是不可能的(例如,您不能爲「全球高分」頻道之類的東西創建客戶端ID,並使用它來廣播多個遊戲客戶端)。

您需要跟蹤您爲每個ClientID創建的通道數量。根據我的經驗,你所描述的工作,但不可靠。使用ClientID創建的最新頻道工作,較舊的頻道有時可以工作,有時不會收到消息。

請注意,如果您嘗試在dev_appserver上執行此操作,所有客戶端都會收到消息,但在真實服務器上,此行爲並不相同。

相關問題