2011-12-20 8 views
1

私は、Webアプリケーションを作成しています、と私はjQueryとPHPで次の操作を行うためのいくつかの方法を必要としています:jQueryのインスタント通知

  • jQueryのは、PHPのページへ
  • PHPページのチェックをリクエストを送信します新しい何があるかどうかではない場合
  • jQueryのは、私はjQuとGoogleでロングポーリング方法を試してみました

プロセスを繰り返して、別の要求を応答を取得し、送信があるまで、jQueryの要求をストール彼らはほとんど同じことをする。これは私が探しているものです。

何か助けていただければ幸いです。

ありがとうございました。

+1

経由

WebSocketをそれを行うと間違って何、*ロングポーリングのですか? –

+0

これを確認してください:http://stackoverflow.com/questions/6433356/jquery-ajax-php-long-polling –

答えて

1

を待っているアイコンを表示することができますが、そのルートを下る行う場合、また、あなたのセッションが要求ごとにロックされていないことを確認する必要があります。あなたは、リクエストをしたときにセッションがロックされると、簡単に状況にぶつかることがあります。

もっと良い選択肢として、30秒ごとにPHPページを要求することで、ソリューションのような "ハートビート"を作成することができます。新しいメッセージが入ったときにあなたに通知するために(StackOverflowに似ている)あなたが聞いたことがあります。

さらに良いのは、よりも、node.jsにWebSocketsを使用することです。 「新しい」何かが入ってくると、PHPがnode.jsに通知することさえできます。つまり、常に正確であり、PHPスクリプトは常時実行されていません。あなたは*を説明し何socket.io

0

JSでsettimeoutを試しましたが、PHPが更新を返さないたびに起動しましたか?だから、

:アヤックス(checkPHP())を経由してPHPをチェック

  • コールJS機能。
  • PHPは、戻り値== 0であれば、返品「0」データで
  • インスタンス
  • については、リターンをチェックし、AJAX機能のための機能を受け取る新しい値を見ない: settimeout(checkPHP,5000);
  • 場合に戻り値!= 0が、やるあなたもの。
  • あなただけの前駆体である限り、戻り値として!= 0
+1

これは単純な*ポーリング*で、通知が配信されているので帯域幅が無駄であり、「インスタント」ではありません[ポーリング頻度]秒後まで。 – josh3736

+0

真実ですが、何か新しいものが到着するまでPHPスクリプトを無期限に実行し続ける方法を見ていません。それはさらに無駄になり、タイムアウトなどもあります。私の意見では、「インスタント」はほとんどいつもポーリングの変種ですが、無知な人もいます。 –

+0

PHPでソケット接続を行うことができますが、PHPでWebSocketサーバーを実装している人がたくさんいるようです(https://www.google.com/search?q=php+websockets)これらのプロトコルの古いバージョンを実装しています)。 – josh3736