1

在 Channel API 的 Google App Engine 文档中,声明“一次只有一个客户端可以使用给定的客户端 ID 连接到通道”。

相反,当我尝试创建具有相同客户端 ID 的通道时,会消耗一个新通道。换句话说,当我为 ClientID "user_one" 调用 creat channel apichannelService.createChannel("user_one");十次时,将创建具有 10 个不同令牌字符串的 10 个不同通道,并且当我向 "user_one" 发送消息时channelService.sendMessage(new ChannelMessage("user_one", message));,不同设备上的所有十个客户端,会收到消息!

你会如何描述这种情况?如何从这种机制中受益(一个具有不同通道的 clientID,都接收相同的消息)?如何防止它为单个用户创建多个频道?

4

1 回答 1

2

文档并不完整,但它很好地描述了它的意图。它说:

一次只有一个客户端可以使用给定的客户端 ID 连接到通道,因此应用程序不能使用客户端 ID 进行扇出。换句话说,不可能为连接到多个客户端创建一个中央客户端 ID(例如,您不能为诸如“全球高分”频道之类的东西创建一个客户端 ID 并使用它来广播到多个游戏客户。)

您可以跟踪为每个 ClientID 创建的频道数量。根据我的经验,您所描述的内容有效,但并不可靠。使用 ClientID 创建的最新频道有效,较旧的频道有时有效,有时收不到消息。

请注意,如果您在 dev_appserver 上尝试此操作,所有客户端都会收到消息,但在真实服务器上此行为并不相同。

于 2012-04-01T05:15:41.123 回答