4

クライアントのポーリングによって駆動される単純なチャットサーバーを作成しました。クライアントは数秒ごとにデータの要求を送信し、新しいメッセージと、ピアがまだ接続されているかどうかに関する情報を受け取ります。

クライアントはモバイルプラットフォーム(iPhone)で実行されているので、私はポーリングを取り除く方法を探していました。これにより、バッテリーがすぐに消耗します。http接続を無期限に開いたままにしておくことは可能であると読みましたが、実際にこの手法を利用する方法を理解していません。また、そのような接続がモバイル環境で使用するのに十分安定しているかどうか疑問に思っています。

理想的なシナリオは、クライアントに影響を与えるイベント(ピアがメッセージを投稿したりオフラインになったりするなど)が発生した場合にのみ、サーバーがクライアントにデータを送信することです。

これをhttp経由で実行することをお勧めしますか、それともtcp経由で独自のプロトコルを作成する必要がありますか?xmppを自分のニーズに合わせてカスタマイズするのはどれほど難しいでしょうか(私のチャットサーバーには、簡単に実装する必要のある特殊な機能がいくつかあります)。

4

5 に答える 5

4

プッシュテクノロジーはどうですか?http://en.wikipedia.org/wiki/Comet_(programming)を参照してください

于 2009-07-23T16:50:46.603 に答える
3

BOSHを介したXMPPについて説明していると思います。

http://xmpp.org/extensions/xep-0206.html

モバイル以外のデバイス上のチャット サーバーと JavaScript クライアントの間で、この http バインディング メソッドを使用しました。それは私にとってはうまくいきました。

于 2009-07-23T17:12:45.483 に答える
1

コメットを含むさまざまなテクニックを使用したこのプロジェクトをチェックしてみてください。リリースの詳細はこちら、こちらはそのページの抜粋です

先月1、2か月の空き時間に取り組んできた、新しいWebベースのIRCチャットアプリケーションであるプロジェクトの最初の公開を発表できることは、私の大きな喜びです。

このプロジェクトは、これを実現可能でスケーラブルかつ効率的にするために開発しなければならなかった多くの新しいテクノロジーをまとめたものです。

数百から数千の「Comet」http接続を処理できるように作成したphpSocketDaemonライブラリなど、「十分に安定している」と私が考える可能性を高めるために構築された基盤となるツールのいくつかは、すでにリリースされています。同量のIRCクライアント接続。

于 2009-07-23T16:55:22.320 に答える
1

私はこの記事を自分で見つけました。この記事では、次の手法について説明しています(質問で参照しました)。

...クライアントにHTTPリクエストを作成させ、プッシュするメッセージが表示されるまでサーバーにリクエストをキューに保持させます。TCP / IP接続が失われたりタイムアウトしたりした場合、クライアントは新しいHTTPリクエストを作成し、遅延はリクエストとレスポンスのペアのラウンドトリップ時間のみになります。。。このモデルでは、HTTP用にクライアントからサーバーへの2つのTCP / IP接続が効果的に必要ですが、永続的ではないため、モバイルフレンドリーです。

于 2009-07-23T16:48:34.003 に答える
0

これはほぼ不可能で危険だと思います。インターネットはステートレスおよびコネクションレスで動作します。つまり、クライアントとサーバー間の接続は常に信頼できないものとして処理されます。そして、これは楽しみのためではありません。

ステートフル接続を取得しようとすると、新しい問題が発生します。特に3gアプリケーションから。接続が切断された場合はどうなりますか?サーバーを制御することはできず、プッシュすることもできません。

SMS /テキストメッセージを送信し、それを処理するアプリケーションを使用する方がさらに簡単だと思います。

于 2009-07-23T16:56:15.797 に答える