2

できる限りこれを説明しようと思います。ただし、基本的には、メッセージや通知などの動的コンテンツがあるWebサイトでは、メッセージが到着したらすぐにこの情報をユーザーに表示する必要があります。ユーザーに新しいメッセージが送信された例は、Webサイトのヘッダーにカウントが含まれるバブルを表示します。

最近、ほぼすべてのWebサイトでこのようなものが見られますが、そのような機能を実装するための最良の方法がわかりません。

私の最初のアイデアは、ajax呼び出しを作成し、これをsetInterval呼び出しでラップして、30秒ごとに要求されるようにすることでした。ここでの明らかな問題は、a)リクエストを30秒待つ必要があり、b)サーバーに1日に何百回もリクエストする可能性があり、実際の新しいコンテンツが表示されない可能性があることです。

私の2番目の考えは、EventListenersを使用することでした。これは、サーバーが何かを指示した場合にのみ要求を実行することを理解しているため、EventListenersがより理想的であるように見えるためです。しかし、私はこのようなものを構築する方法を100%確信していません。誰かが簡単な例を作成したり、このようなものの基礎となる何かを指摘したりできますか?

だから私がやりたいことを明確にするために:

メッセージの送信や通知の作成などの新しいことが発生すると、イベントリスナーがページ上の何かを取得して更新するイベントが送信され、情報を含む小さなポップアップが表示されるか、バブルが更新されます。Messages (2)

これを実装するためにCakePHPとjQueryを使用します。だから、これに固有のものは何でも素晴らしいでしょう...うまくいけば誰かが私を助けてくれるでしょう。

基本的に、私はEventListenerとsetIntervalについて、そしてそれがajax呼び出しでどのように機能するかについて質問しています...

4

1 に答える 1

2

Alex Ball が示唆しているように、COMET プログラミング手法について調査し、この質問Simple comet example using php and jqueryの回答も参照する必要があります。あなたが求めているものに効果的な手法を実装するための「単純な」答えは実際にはありませんが、最も効果的なのは iframe を使用することです。iframe を使用すると、サーバー (PHP 側) との永続的な接続が可能になります。ここで、新しいメッセージを確認し (新しいメッセージのクエリ)、ある場合はデータを返すことができます。あなたの ajax 呼び出し (成功関数) は、このデータを処理してから、サーバーに別のポスト バックを行います。何もない場合は、ループする必要があります。繰り返しになりますが、効果的な COMET プログラミング手法の実装は簡単ではありません。ただし、いくつかの有用な例を次に示します。 http://www.webreference.com/programming/javascript/rg30/index.htmlhttp://www.zeitoun.net/articles/comet_and_php/start、 setInerval はチャット、おそらく通知には効果的ではありません。

COMET テクニックは CakePHP に固有のものではありません。

于 2012-06-30T17:45:55.453 に答える