2012-04-01 14 views
1

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

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

このシナリオをどのように記述しますか?どのようにこのメカニズムから恩恵を受けることができますか?どのように1人のユーザーのための複数のチャネルを作成するのを防ぐには?

答えて

2

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

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

各ClientIDに対して作成するチャネル数を把握する必要があります。私の経験から、あなたが描いていることは仕事ですが、信頼できるものではありません。 ClientIDで作成された最新のチャンネルは機能し、古いものは動作することがあり、メッセージを受信しないことがあります。

これをdev_appserverで試してみると、すべてのクライアントがメッセージを受信しますが、実際のサーバーではこの動作は同じではありません。