2012-04-01 54 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上执行此操作,所有客户端都会收到消息,但在真实服务器上,此行为并不相同。

相关问题