首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >轮询与长轮询

轮询与长轮询
EN

Stack Overflow用户
提问于 2013-08-07 17:33:12
回答 1查看 17.4K关注 0票数 23

我拿到了这些examples,用javascript展示了轮询和长时间轮询,但是我不明白它们之间有什么不同。特别是关于长轮询的例子,它是如何保持连接打开的?

这就是传统的轮询场景:

代码语言:javascript
运行
复制
(function poll(){
  setTimeout(function(){
    $.ajax({ url: "server", success: function(data){
      //Update your dashboard gauge
      salesGauge.setValue(data.value);

      //Setup the next poll recursively
      poll();
    }, dataType: "json"});
  }, 30000);
})();

这是一个长轮询的例子:

代码语言:javascript
运行
复制
(function poll(){
  $.ajax({ url: "server", success: function(data){
    //Update your dashboard gauge
    salesGauge.setValue(data.value);

  }, dataType: "json", complete: poll, timeout: 30000 });
})();

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-07 17:42:18

不同之处在于:长轮询允许某种类型的事件驱动通知,因此服务器能够主动向客户端发送数据。可以说,正常轮询是对要获取的数据的定期检查。维基百科对此有很详细的描述:

对于长轮询,客户端以类似于正常轮询的方式向服务器请求信息;但是,如果服务器没有任何可供客户端使用的信息,则服务器不发送空响应,而是保持请求并等待信息变为可用(或等待合适的超时事件),之后最终将完整响应发送到客户端。

长轮询减少了需要发送的数据量,因为服务器只在真正有数据时发送数据,因此客户端不需要在每个间隔x进行检查。

如果您需要一种性能更好(也更优雅)的全双工客户机/服务器通信方式,考虑使用WebSocket协议,那就太好了!

票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18099798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档