2010-12-28 15 views
1

私は、ユーザーがチャットできるアプリをしたいと考えていますが、視覚的には画面上のものをペイントします。画面は半分に分割され、各参加者は半分に何かを描画し、それは他の参加者に表示されます。Androidでチャット/スケッチをリアルタイムでどのように共有できますか?

タッチスクリーン上でのスケッチは、カラー/ブラシの選択、消しゴムなどをユーザに提供することは非常に簡単でなければなりません。私は何らかのメッセージにユーザ入力を取り込む必要があります。遠隔参加者で再生する必要があります。

これらの2人のユーザーはどのように通信しますか? JSON + AppEngine + XMPPについて考えています。

  • スケッチアクションをclient AからJSONにシリアライズし、それらを保存するAppEngineにプッシュします。このアプローチは、サーバ上のものをP2P接続よりも優れているのでしょうか?電話A-> AppEngine->電話B往復のために重大な遅延が追加される可能性があります
  • client Bはどのようにメッセージを取得しますか?私はAppEngineと常時接続することはできません。 this questionにプッシュ通知に関するものがあります。 XMPPが動作しない場合、サーバーをポーリングする必要がありますか?
+0

各クライアントはサーバー側の履歴または描画イベント(JSonなどで説明)を保持できると思います。すべての描画の機会に、それはサーバー上の新しい情報をプッシュします。一方、N秒ごとに、クライアントは最新の描画操作のバージョンを他のクライアントから引き出し、異なる場合はダウンロードします。素敵なプロジェクトのように聞こえる、私にもっと知ってもらいましょう:) –

答えて

1

App Engineの使用を計画している場合は、hereのようにChannel APIを使用している可能性があります。

チャンネルAPIは、アプリケーションとGoogleサーバーの間に永続的な接続を作成し、アプリケーションがポーリングを使用せずにリアルタイムでJavaScriptクライアントにメッセージを送信できるようにします。これは、すぐに新しい情報をユーザーに更新するように設計されたアプリケーションや、ユーザー入力が他のユーザーにすぐにブロードキャストされるようなアプリケーションに役立ちます。いくつかの例には、共同アプリケーション、マルチプレーヤーゲーム、チャットルームなどがあります。一般に、Channel APIを使用する方が、人間のユーザー間で情報を中継する場合や、体系的に生成されないイベントから更新を予測またはスクリプト化できない状況では、ポーリングよりも優れています。

+0

残念ながら、チャンネルAPIのためのアンドロイドクライアントはありません(ただし、あなたはメッセージを一緒に渡すためにwebviewをハックすることができます) –

2

これは非常に幅広い質問であり、多くの異なる回答があります。それが私に任せられたなら、私はおそらく投票に行くだろう。あなたは一定の接続を望んでおらず、GoogleのCloud2Deviceのようなものを使用することは、このようなことのために少し過度のことかもしれません。私はそれがこのようなものになると思うだろう -

  • クライアントAとクライアントBは、互いに接続を開始します。彼らはどちらもセッショントークンを受け取ります。
  • クライアントAが画面上に何かを描画します。描画されたポイントは、中央サーバーに送信され、セッショントークンとともに保存されます。
  • クライアントBは、新しいポイントについて中央サーバーに投票し、セッショントークンを渡します。
  • 取得したポイントは、クライアントBの画面に表示されます。
  • 以前格納されたポイントが削除されます。
  • を繰り返します。

具体的な技術については、それは本当にあなた次第であり、あなたが気に入っているものです。最も簡単なのは、中央データベースサーバーを使用してポイントを格納し、セッショントークンを生成することです。

+1

クラウドからデバイスへのAPIはこれに完全に適しています。私はそれが "過労"になっているのを見ない。 –

+0

@ニックはい、Cloud to Deviceは、クライアントに通知するために必要なものとまったく同じように見えます。 +1のコメント – Axarydax

+0

@ニック - 正直言って、私はそのコメントの大きな理由はありません。私は、何百ものデバイスを完全にデバイスレベルで管理するためのC2D APIの使い方がわかります。私はいつも一人一人の人にとっては「より単純な」解決策があると感じました。私は間違っている可能性があります:) –

関連する問題