小编典典

轮询多长时间

ajax

我正在研究ajax长期轮询,但感到困惑。传统的ajax调用和长时间轮询有什么不同

   var lpOnComplete = function(response) {
   alert(response);
   // do more processing
   lpStart();
  };

    var lpStart = function() {
    $.post('/path/to/script', {}, lpOnComplete, 'json');
    };

    $(document).ready(lpStart);

此示例仅以递归方式调用服务器。与setInterval中的传统调用不同。


阅读 521

收藏
2020-07-26

共1个答案

小编典典

顾名思义,“ 长时间轮询” 意味着长时间轮询某些内容。

$.post('/path/to/script', {}, lpOnComplete, 'json');

这是实际过程的开始,您对服务器上的某个脚本进行ajax调用,在本例中为/path/to/script,您需要使服务器脚本(php例如)足够智能,以便仅在所需数据可用时才响应请求,该脚本应等待指定的时间段(例如1分钟),并且如果1分钟之内没有可用数据,则该脚本应不包含数据而返回。

服务器返回内容后,立即在回调函数中再次对同一脚本进行ajax调用,服务器脚本再次继续该过程。

考虑一个聊天应用程序,按照常规方式,您轮询服务器说是每2秒一次,即使没有消息可用,服务器也会返回消息。如果一分钟内服务器没有收到新消息,您最后将服务器击中30次等一下。

现在考虑采用 长轮询
方式,您将服务器脚本设置为等待一分钟以接收新消息。从客户端,您对脚本进行了一个ajax调用,并说下一分钟没有消息到达,服务器将在1分钟后响应。您在过去1分钟内仅一次击中服务器。你能想象
30命中vs 1命中

2020-07-26