2012-04-13 7 views
0

私は最近、Google App EngineのChannel APIを習得しようとしていました。GAE Channel APIメッセージは1人のクライアントにのみブロードキャストされますか?

私は簡単なチャットアプリを作ろうとしましたが、問題が発生しています。

これは一般的に私がやったことです。

サーバーは、静的なチャネルを開き:

var channel = new goog.appengine.Channel(token) 

私はGoogleのアプリケーションエンジンのユーザーを使用していない:

token = channel.create_channel('bigboys') 

クライアントはJSでチャンネルに接続します。私はクライアントにログインする必要はありません。

私の問題は、チャットアプリは実際には機能しないということです.1人のクライアントだけがチャンネルに参加できます。私は、1つのチャネルルール当たり1つのクライアントIDがあることを知っています。では、1つの「チャットルーム」で複数のクライアントをサポートするにはどうすればよいですか?

答えて

7

1つのクライアント(ブラウザ)とサーバーとの間の接続をチャネルと考えてください。

チャットルームをお持ちの場合は、各クライアントにチャンネルが必要です。チャットルーム内のすべてのクライアントと各クライアント用のチャネルを追跡するには、サーバー側に何かが必要です。メッセージを送信するときは、チャットルームのすべてのクライアントチャネルでメッセージを送信する必要があります。

+0

OKAY。それは私が解釈したものより意味があります – AlexCheuk

+0

「ブロードキャスト」を聞いているすべてのクライアントを追跡する最適な方法は何ですか?あなたはそれらをMemcacheに入れますか?データストア? – Chuck

+2

私はすべてのクライアントのリストを格納する 'ブロードキャスト'用のデータストアにエンティティを持っています。データストアへのヒットを減らすためにmemcacheを使用します(ndbはこれを自動的に行います)。 – dragonx

関連する問題