2012-02-13 7 views
7

アンドロイドチャットアプリを作成します。実際にチャットはアプリの機能になるだろう。私はアンドロイドとのチャットアプリに関するベストプラクティスを知りたい。私が慣れ親しんでいる2つのオプションは、C2MDと数秒ごとにサーバーdbのカスタムポーリングだけです。androidでチャットアプリを作成するベストプラクティスは何ですか

今、私はC2MDが偉大であり、すべてであることを知っていますが、私の理解からはそれは信頼できるものではありません。私はそれを実装しようとしており、それは動作していないようです。また、何らかの理由でGoogleの端末で何かが発生した場合(サーバーがダウンしているような - 起こる可能性はありません)、私はそれらに連絡する方法がなく、時間枠にいます。

私自身のこと(ユーザーが作成したメッセージを送信し、定期的に新しいメッセージが到着したかどうかを確認するための基本的なアプローチ)を行う場合は、ユーザーエクスペリエンス、私のサーバーの私のポーリングは5秒くらいかのようになければならず、それは狂ったようにバッテリーを噛んでしまうでしょう。これは本当にこのアプローチを使うことによる私の主な欠点です。

私は気づいていないより良い方法があると思っています。助けてください、建築構造、何かが助けてください。

答えて

8

XMPPを使用してください。 Android XMPPのStackOverflowを検索すると、おそらくhereになり、Smack(XMPPクライアントライブラリ)の亜種を使用することをお勧めします。コメントに対処するための

更新:

まず第一に、XMPPプロトコルではなく、クライアントまたはサーバです。これを使用する利点の1つは、広く利用できるXMPPクライアントとサーバーの実装があることです。 Wikipedia articleはほとんどの質問に対応しています。

Gtalkなどに対するあなたのコメントについて:

XMPPネットワークのアーキテクチャは、電子メールに似ています。誰でも独自のXMPPサーバーを実行でき、中央のマスターサーバーはありません。

ポーリングに関して

:XMPPの2つの方法でHTTPを使用することができる

:ポーリング[21]および結合[22]本来非推奨となっているポーリング方法は、サーバー側のデータベースに格納されているメッセージが、HTTPのGETとPOSTによってXMPPクライアントによって定期的にフェッチ(およびポスト)されていることを示しています。 HTTPバインディングでは、クライアントはメッセージを送信するとすぐにメッセージを受信するために、より長寿命のHTTP接続を使用します。この通知プッシュモデルは、ポーリングよりも効率的です。多くのポーリングでは新しいデータが返されません。

WebSocketも使用できます。

.NET統合について(必要な場合は、独自のXMPPサーバーを実行するだけでよい)、XMPPおよび.NET用のStackOverflowを検索するだけで、いくつか質問/アイデアを得ることができますこの質問のようなXMPPサーバと.NETサーバの統合について:Opensource .Net Jabber/XMPP server?

+0

OK XMPPはWindowsサーバ/ .net webserviceと対話しますか?どのようにして自分のWebサービスと話すことができますか?また、頻繁にサーバーをポーリングすることなくメッセージを受信しますか?私はXMPPに精通していないし、Googleを持っているが、実際には良い定義を得ていない。 – user638049

+0

これはgtalk用ではありません。私が作成しているサードパーティのチャットプログラムになります。私は自分のwebservicesをホストし、チャットメッセージのすべてを自分で保存します。 – user638049

+0

あなたのコメントのために更新されました。 – kabuko

関連する問題