2009-03-14 5 views
3

記事へのリンクも高く評価されます。検索する用語はわかりません。サーバーがWebクライアントにメッセージを送信する最適な方法は何ですか?

私は、Webアプリケーションがサーバーツークライアント通信をどのように可能にするかを知りたいと考えています。私はウェブがこのために設計されておらず、それがハードルの何かであり、それがどういう状態であり、ベストプラクティスが何であるか疑問に思っています。

代替方法として、ajaxを使用した一定または時折のポーリングがありますが、WebサーバーがWebクライアントへのステートフルな接続を維持することは可能ですか?

編集:この質問をするもう一つの方法は、StackOverflowのは、それが一番上にその小さなバーを表示するために新しい記事が利用可能であることをページを教えてくれない方法ですか?

+0

あなたがしようとしていることについてさらに詳しい情報を教えてください。私はこれが正当な「一般的な」質問であることを感謝しますが、あなたのケースの詳細(もしあれば)が答えを導くのに役立ちます。例えば、あなたはSOのライバルサイト、つまりインスタントメッセンジングクライアントを書いていますか? –

+0

LOLいいえ、SOのライバルではありません。基本的に私は、Web上、複数の接続上、または少なくともその可能性を調査して、一種の "データバインディング"機能を実装しようとしています。 – devios1

答えて

5

StackOverflowがサーバーをポーリングしてデータがあるかどうかを確認します。

あなたが探しているのはCometです。

+0

ああ、これは鐘を鳴らします。この問題は、永続的に読み込まれるWebページの外観を作成することです。個人的に私はそれらがひどいことがわかります。 – devios1

0

実際には、この種の通信を処理するWebブラウザは設定されていません。通信は、Webサーバーが情報を送信するポート(通常80または443)でリッスンしている一方通行です。

私はちょうど彗星のリンクを読んでいます。興味深いアプローチですが、覚えておかなければならないのは、依然としてクライアントによって技術的に開かれていることです。サーバーは実行のためのコードを送信していますが、ブラウザーは最終的に制御され、サーバーがいつ通信を行うかを決定します。

今日のWebブラウザでは、ブラウザの助けを借りずに、サーバーは技術的にメッセージを送信できません。技術的には、クライアントマシン上でいくつかのActive Xコントロールを実行して回避することができるかもしれませんが、試していません。

0

HTTPはステートレスではありません。長い間、NetscapeはHTTP Pushを実装していましたが、それは成功していませんでした。

私はWebサービスなどでポーリングを使用します。プラグインなし(つまり、Flash、Java、Silverlight)は、サンドボックスにrawソケットを使用する権利がありますので、そのように実装しようとするのは時間の無駄でしょう。

1

ブラウザからの真の双方向通信を得るには、Silverlight、Flashなどのプラグイン技術を使用する必要があります。これらのプラグインは、サーバーソケットとの永続的な接続を確立するTCP接続を作成できます。 HTTPサーバーとのTCP接続は実際には確立できないので、ブラウザーと通信するために追加のサーバー・エージェントを作成する必要があることに注意してください。

基本的には、Stackoverflow、GmailなどのAJAXサイトが使用するものとは全く異なるネットワーク展開モデルです。彼らはすべて一定の間隔でサーバーをポーリングするブラウザーに依存しています。

+0

魅力的なコンセプト!tcp接続を確立する目に見えないフラッシュコンポーネントを作成することは可能であり、サーバーからのメッセージに応じて、ページの一部の更新が発生する可能性がありますか? – devios1

+0

はい、Flashプラグインは既にインストールされている必要があります。私は、Silverlightについて知識が豊富です。あなたが間違いなくホスティングページのHTMLに良いフックを持っているので、あなたが何を記述しているのかは分かります。 SilverlightはC#も使用できますが、FlashはActionScript(yuk)です。 – sipwiz

+0

ええ、Silverlightは開発の観点からはもっと魅力的な選択肢ですが、私は採用率について考えています。 – devios1

関連する問題