1

我有一个用于聊天的脚本,它使用了 Ajax,

我想做一个监控脚本,以便管理员查看用户之间的所有交流。

问题是我没有找到任何脚本来解释如何在不重新加载页面的情况下从数据库接收数据。

如果有人可以帮助我找到该脚本或给我一个构建它的教程,我会很高兴。

接受我最大的尊重。

亲切的问候。

SP。

4

1 回答 1

1

您正在使用 ajax .. ajax 的整个概念不必重新加载页面...

这项工作的最佳工具是:

  • 网络套接字。更少的开销。2路通讯。缺点:难以实现且不跨浏览器
  • 服务器发送的事件。更少的开销。1路通讯,无重复请求。缺点:不能跨浏览器
  • 只是简单的 ajax 轮询......效率较低,开销更大,请求很多,但它可以在任何地方工作。

Socket.io(为 nodeJS 编写)可能是最适合这项工作的。它为您利用正确的传输(websockets、longpolling、服务器发送事件、flashsockets、ajax 轮询),并为您提供最佳性能。

以下是几个 php js 实现示例:

使用服务器发送的 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 回答