javascript - 轮询工作多长时间

标签 javascript jquery asp.net 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调用有什么不同..

最佳答案

顾名思义,Long Polling 表示长时间轮询某事。

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

这是实际流程的开始,您对服务器上的某个脚本进行 ajax 调用,在本例中为 /path/to/script ,您需要创建服务器脚本(php 例如)足够聪明,因此它只在需要的数据可用时才响应请求,脚本应该等待指定的时间段(例如 1 分钟),如果 1 分钟内没有可用数据,那么它应该没有数据返回。

一旦服务器返回一些东西,在你的回调函数中你再次对同一个脚本进行 ajax 调用,服务器脚本再次继续这个过程。

考虑一个聊天应用程序,以传统方式,您每 2 秒轮询一次服务器,即使没有可用消息,服务器也会返回。如果服务器在一分钟内没有收到任何新消息,您最终会访问服务器 30最后一分钟的次数。

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

关于javascript - 轮询工作多长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15724055/

相关文章:

javascript - 使用 JS 或 jQuery 区分两个容器

jquery - 处理在 jQuery 的 ajax 请求中返回整个 HTML 文档的服务器端 HTTP 4nn/5nn 错误

javascript - GridView 卡住标题

javascript - 从外部 JS 文件调用时 document.getElementById() 返回 NULL

javascript - 流 ArrayBuffer websocket binary.js

javascript - 匹配没有前缀的数字

javascript - Openlayer 的 drawstart 事件在 drawend 发生后多次触发

javascript - 使用 ng-model 指令从 select2 中删除空选项

javascript - 悬停时放大图像

c# - 如何更改剑道错误信息?