1

ChannelAPIに関するGoogleAppEngineのドキュメントには、「特定のクライアントIDを使用してチャネルに接続できるのは一度に1つのクライアントのみ」と記載されています。

逆に、同じクライアントIDでチャネルを作成しようとすると、新しいチャネルが消費されます。つまり、ClientID「user_one」のcreat channel apiをchannelService.createChannel("user_one");10回呼び出すと、10個の異なるトークン文字列を持つ10個の異なるチャネルが作成され、「user_one」channelService.sendMessage(new ChannelMessage("user_one", message));にメッセージを送信すると、異なるデバイス上の10個のクライアントすべてになります。 、メッセージを受信します!

このシナリオをどのように説明しますか?このメカニズム(異なるチャネルを持つ1つのclientID、すべて同じメッセージを受信する)からどのように利益を得ることができますか?シングルユーザー用に複数のチャネルが作成されないようにするにはどうすればよいですか?

4

1 に答える 1

2

ドキュメントは完全ではありませんが、その意図をかなりよく説明しています。それは言う:

特定のクライアントIDを使用してチャネルに接続できるのは一度に1つのクライアントのみであるため、アプリケーションはファンアウトにクライアントIDを使用できません。つまり、複数のクライアントに接続するための中央のクライアントIDを作成することはできません(たとえば、「グローバルハイスコア」チャネルなどのクライアントIDを作成し、それを使用して複数のゲームにブロードキャストすることはできません。クライアント。)

ClientIDごとに作成するチャネル数を追跡するのはあなた次第です。私の経験から、あなたが説明することはうまくいきますが、確実ではありません。ClientIDで作成された最新のチャネルは機能し、古いチャネルは機能する場合もあれば、メッセージを受信しない場合もあります。

dev_appserverでこれを試している場合、すべてのクライアントがメッセージを受信しますが、実サーバーではこの動作は同じではないことに注意してください。

于 2012-04-01T05:15:41.123 に答える