2010-12-20 7 views
0

私は、サーバーで発生したイベントについて、自分のWebサイトの訪問者に通知できるようにしたいと考えています。いつでもサーバーからWebブラウザにメッセージを送信する方法はありますか?

思う:

  • ウェブサイトの訪問者は、輸出が行われたときに、訪問者に通知する必要があり、時間がかかり、サーバー上のバックグラウンドで実行されている輸出またはレポートを待っています。

または

  • ウェブサイトの訪問者は、営業担当者からのチャットメッセージを待っているメッセージがそれらに送信されたときに、訪問者に通知する必要があります。私はこれを行うにはいくつかの方法を考えることができ

  • ポーリング HTTPサーバ毎秒 があるかどうかを確認するために継続的に
  • 永遠にオープンサーバー へのHTTP接続をキープ新しいメッセージ
  • Javaサーバプロセスに接続 を開いているJava アプレットを書き込む

これらのどれも特に優雅な解決策には見えません...これを行うには良い方法がありますか?

答えて

0

私が考える限り、これにアプローチする最も良い方法は、クライアントにサーバーをポーリングさせることです。クライアントのブラウザに情報を強制する方法はわかりません。

JavaScript/AJAXのポーリングは理想的だと思います。

0

私が知る限り、Javaアプレットからソケット(ネットワークインターフェイス経由の接続)を開くことはできません。それは、秘密政策の一部です。

2

HTTPはクライアント - サーバープロトコルであるため、サーバーが開始する通信は許可されません。

このシナリオにはいくつかの回避策がありますが、それらのほとんどを思い付いています。

  1. 最も一般的で低技術の手法はポーリングだけです。あなたは、飛行機を検索するときに、ほとんどのオンライン旅行代理店でこれを見ることができます。
  2. タイムアウトするまで接続を開いたままにして、サーバーが何かを送信するのを待つ別の接続を開くと、Cometと呼ばれ、多くの方法で、時にはJavaアプレットでも実装されます。
  3. これを行うための最も標準的な方法は、WebSocketsであり、これはあなたが望むことができる全二重(2ウェイ)チャンネルを提供します。これは、接続を開くためにHTTPを手動で処理する全く新しいプロトコルです。唯一の欠点は、新しいことでブラウザの互換性をチェックすることです。 demosをチェックアウトします。
関連する問題