使用查询检测服务器是否已关闭

时间:2014-10-30 18:27:32

标签: javascript jquery ajax

我编写了以下代码,每2秒向我的服务器上的心跳端点发出XHR请求。根据成功或失败,我继续执行或使用Jquery UI块插件阻止UI。

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 (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);

现在我的整个UI都缓存在客户端,接下来的调用是更改页面部分的ajax calla。问题是这些调用中的一些阻塞超过2秒,此时页面块和用户会收到连接警报。

如何有效避免这种假阳性?我无法增加超时值,因为如果我确实将超时设置为10秒,如果最终用户在第9秒进行阻塞调用会阻塞3秒,那么我将再次出现误报。

这种情况有解决方法吗?

0 个答案:

没有答案