とあるWebアプリケーションで、ユーザーが入力した内容をバックグラウンドで処理する機能があります。
サーバー側でバックグラウンド処理が終わったら、ブラウザ側のユーザーに処理が終わった事を通知したいのですが、どのように実装すれば良いでしょうか?
jQueryやJavaScriptを利用した事が無いので、分かりやすい例があれば教えて下さい。
お手軽なのはAjaxによるポーリングですかね。
リバース Ajax の目標は、サーバーがクライアントに情報をプッシュできるようにすることです。Ajax リクエストはデフォルトではステートレスであるため、クライアントからサーバーに対して開始することしかできません。この制約は、応答性の高いクライアント・サーバー間通信をシミュレートする手法を使用することによって回避することができます。
リバース Ajax: 第 1 回 Comet の紹介
モダンなのはWebSocketなんじゃないでしょうか。
本格的にはsocket.ioなどをインストールして~というのがありますが
PHPのみでHTML5のWebSocketを体験する方法 - [Swb:]渋谷に住むWEBデザイナの備忘録
PHPだけでサクッと体験したい方は続きを御覧下さい。
javascriptやjqueryを利用された事が無いとの事なので、なるべくシンプルにjqueryでajax使うだけが良いのかな、と思いましたので以下の参考URLを回答にしてみました。
jqueryのajaxっていう手法でPHPへリクエスト→処理が終わったPHPがjqueryに結果出力→結果を受け取ったjqueryがユーザーに通知って流れです。
http://kihon-no-ki.com/jquery-php-ajax
ありがとうございます!
サーバーサイド側で処理が終わったか終わってないかを確認する必要があるため、何秒間に1回はアクセスしなければならないのですが、その場合はどうすればいいのでしょうか?
while()みたいな関数はあるのでしょうか?
それとも例で出して頂いた内容であれば、接続は永遠に続くのでしょうか?
サーバ側で処理が終わったら勝手にajax内定義の関数が呼び出されるので、自分で確認しに行く必要は無いですよ。
jqueryでは$.ajax内にsuccessっていう名前の関数定義すれば、それが呼ばれます。
その引数にサーバからの出力(echo メッセージとか)も入っているので、その内容に応じた処理をすれば良いかと思います。
webtomakeさんが仰っていた通知もこの関数内での処理で最初は問題無いんじゃないでしょうか。
慣れてきたらerror関数やcomplete関数の使用も検討して、ベターな選択をしてみて下さい。
ありがとうございます
2016/02/24 13:34:15