2

Android ベースのクライアント用のチャット/通信サーバーを作成する必要があります。

Android チャット クライアントは、次の簡単な機能が必要な 3g または wifi ネットワーク経由でインターネットに接続されます

  • 新しいユーザーを登録する
  • あるクライアントから別のクライアントにメッセージを送信する
  • 一度に約 500 のクライアントが接続されます

デスクトップアプリの開発から来て、私はソケットベースのソリューションしか考えておらず、サーバーはJavaベースのアプリケーションであるべきだと考えています

問題は次のとおりです。ソケットベースのアプローチは実行可能ですか、それとも他の通信プロトコルを使用する必要がありますか。

4

2 に答える 2

6

TCP ソケットを使用しても問題は解決しますが、メッセージのフォーマット、ストリーミングなど、多くの処理を行う必要があるため、お勧めできません。既に利用可能なメッセージング プロトコルとライブラリのいずれかを使用してください。

XMPPを検討することをお勧めします。これには、デバイス間のメッセージングを実装するための一連のオープン スタンダードがあります。利点は、XMPP クライアントとサーバーの両方を実装するために利用できるライブラリがたくさんあることです。

Android デバイスに XMPP クライアントを実装するには、 Smackというライブラリを使用できます。これは実際には Java ベースのライブラリです。Smack の Android ポートであるAsmackを使用して Facebook XMPP チャット クライアントを実装しました。Smack のドキュメントは Asmack にも適用できます。ただし、Asmack は 2 年間更新されておらず、いくつかの問題があり、クライアントを Smack に変更して、新しいバージョンが Android でうまく動作するかどうかを確認することを考えていました。

XMPP サーバーの実装については、Smack を作ったのと同じ人が作ったOpenfireをチェックしてください。私はまだこれを使用していませんが、プロジェクト ページには Openfire のセットアップに関する詳細なドキュメントがあります。私が使用した Smack ライブラリの品質から判断すると、Openfire はかなりうまく機能すると思います。

幸運を!

于 2012-10-01T06:42:38.843 に答える
0

HTTP は高レベルのプロトコルであるため、サーバーの反対側がどのように記述されているかは問題ではありません。実際には、 GCMについて何かしない限り、おそらくソケットを使用することになります。ソケットはバッテリーの消費量が多いため、アプリの使用率に比例してチャット サーバーの更新を確認するために、ソケットをたまにだけ保持したい場合があります。また、ネットワーク接続をメイン スレッドに保持することはできず、通常はサービスを介してアクセスされることにも注意してください。

于 2012-10-01T05:35:03.657 に答える