1

使用したAjaxをチャットするためのスクリプトがあります。

管理者がユーザー間のすべてのやり取りを確認できるようにするために、監視スクリプトを実行したいと思います。

問題は、ページをリロードせずにdatabseからデータを受信する方法を説明するスクリプトが見つからなかったことです。

誰かが私がそのスクリプトを見つけるのを手伝ってくれるか、それを構築するためのチュートリアルを私に与えることができれば、私はうれしいです。

すべての私の最大限の敬意を受け取ります。

敬具。

SP。

4

1 に答える 1

1

あなたはajaxを使用しています..ajaxの概念全体はページをリロードする必要はありません...

この仕事に最適なツールは次のとおりです。

  • WebSocket。オーバーヘッドが少なくなります。双方向通信。欠点:実装が難しく、クロスブラウザではない
  • サーバーから送信されたイベント。オーバーヘッドが少なくなります。一方向の通信、繰り返しの要求はありません。欠点:クロスブラウザではありません
  • 単なるajaxポーリング...効率が低く、オーバーヘッドが多く、多くのリクエストがありますが、どこでも機能します。

Socket.io(nodeJS用に作成)はおそらくこの仕事に最適です。適切なトランスポート(WebSocket、Longpolling、サーバー送信イベント、flashsockets、ajaxポーリング)を活用し、利用可能な最高のパフォーマンスを提供します。

phpjsの実装例をいくつか示します。

サーバーから送信されたDOMイベントの使用(クロスブラウザーではない):3秒ごとに+/-を更新

//javascript:
var source = new EventSource('updates.php');
source.onmessage = function (event) {
  console.log(event.data);
};

//php server side:
<?php
header("Content-Type: text/event-stream\n\n");
//..perform queries and put it in $data..
echo "data: " . json_encode($data) . "\n";
?>

jQuery ajaxリクエストを使用:1000ミリ秒ごとにリクエストを送信します

//javascript: 
var interval_id = setInterval(function(){
    $.ajax({
      type: "POST",
      url: "updates.php",
      success: function(data){
        console.log("Data: ", data);
      }
    });
}, 1000); //last param is the interval time in ms

//php server side:
<?php
//..perform queries and put it in $data..
echo json_encode($data) . "\n";
?>

phpWebsocketsの使用:lib + codesample

于 2012-09-07T10:59:12.413 に答える