替代轮询失败的XHR请求以检查互联网连接

时间:2014-10-31 05:18:41

标签: javascript jquery ajax polling

我使用以下脚本每2秒轮询一次服务器以检查用户是否已连接到VPN。

var uiBlocked = false;
window.setInterval(function() {
$.ajax({
  cache: false,
  type: 'HEAD',
  url: '/heartbeat/',
  timeout: 1000,
  success: function(data, textStatus, XMLHttpRequest) {
   if (uiBlocked == true && navigator.onLine) {
      uiBlocked = false;
      $.unblockUI();
     }
   },
   error: function(XMLHttpRequest, textStatus, errorThrown) {
    if(textStatus != 'timeout'){
       if (uiBlocked == false){
         uiBlocked = true;
         $.blockUI({
           message: "Lost connectivity, please reconnect your VPN.",
           css: {
            border: 'none',
            padding: '15px',
            backgroundColor: '#000',
            '-webkit-border-radius': '10px',
            '-moz-border-radius': '10px',
            opacity: .5,
            color: '#fff'
          } });
     }
   }
 }
})
}, 2000);

问题在于,常规轮询昨天使PROD服务器停机。有没有替代方案,我可以在这里使用它来更有效地做到这一点。

1 个答案:

答案 0 :(得分:0)

我会降低轮询率并确保服务器没有为每个请求创建新连接。

您没有提到它是什么类型的服务器,但该设置应该在所有服务器上称为KeepAlive。除此之外,还可以看一下服务器出现故障的原因?