2012-02-21 41 views
3

最近、私はこのような必要性を感じました。クライアント(Webブラウザ)は、タスクがサーバ側で非同期に実行されるよう要求し、クライアントはそれをやめます。Webアプリケーションでサーバーからクライアントにメッセージを送信する方法

サーバーはタスクを完了すると、メッセージを送信してクライアントに通知します。

だから、私の質問は:主導クライアントにサーバー側からのメッセージ(プレーンテキスト、JSONなど)を送信する方法は

ありますか?

+1

あなたは何をしようとしていますか?いくつかの種類のシナリオが役に立ちます。使用しているサーバーとクライアントサイドのツールは何ですか?例えば。 PHP(サーバー)とJavascript(クライアント)。それとも別のもの(Java、C、...など)ですか?短い答え:はい、可能です。より詳細な回答には、いくつかの追加情報が必要です。 – ale

答えて

7

であなたを助けるかもしれない チェックアウトグーグル、あります解決策を考えてみましょう:

これに対する最も一般的な(そして最も安全な)解決策は、おそらくAJAX long-pollingです。つまり、クライアントに定期的にリクエストを行い、応答。たとえば、サーバー側の処理が完了したときに「完了」メッセージを返すリソースを設定します。あなたの質問を考えれば理想的ではありませんが、確かに実現可能であり、かなり信頼性があります。

実際にプッシュ技術を使用するには(実際に必要とするものではありませんが、正確には何を求めているのですか)、WebSocketsをご覧ください。そのリンクを見れば、記事の本文には技術をサポートしているブラウザのリストが表示され、ユースケースに応じてさらに調査したいと思うかもしれません。

私は個人的に古いブラウザをたくさん扱っているので、Ajaxのポーリングは私の人に行きます。これは半長期実行プロセスであると仮定すると、2〜5秒ごとにポーリングすることで、ユーザーをあまりにも怒らせてはなりません。これはリアルタイムのチャットなどには適していませんが、「200Mのファイルを解析しました」というのはうまくいくはずです。

+1

あなたの例では、ユーザーが実際にポーリングするページ(ブラウザを閉じる、別のサイトに移動するなど)を実際に残していることを意味する場合、その接続を維持することはできません。それがあなたの例であれば、別の通知システムを検討するべきでしょう。 (おそらく電子メール) – jholder

-2

仮想SMTP任意のExchangeサーバーやヤフーなどの他の電子メールサーバF使用のような利用できるので、多くの技術は、2つの可能な、このlinkが私の頭の上から、この点

関連する問題