如何将Javascript函数挂钩到页面重新加载请求或客户端发起的websocket断开连接?

时间:2016-12-16 12:30:00

标签: javascript websocket reload

我的问题:我的页面有一个websocket处理程序。我通过显示"服务器断开连接来处理断开事件(通常由服务器重启引起),请重新加载"覆盖。

但是,当用户触发重新加载时,浏览器所做的第一件事就是断开套接字,这也会触发断开连接事件,因此在被新页面替换之前会出现此叠加层。这很令人困惑,尤其是因为重新加载页面可能需要几秒钟。

澄清一下,会发生什么

  • 用户点击重新加载
  • Web套接字被浏览器断开连接
    • ws.onclose运行
      • ...并显示"请重新加载页面"警报覆盖(或其他)
  • 在服务器开始组装新页面之前经过一段时间
  • 页面重新加载,叠加层消失

我想仅在服务器是断开连接的始发者时才显示覆盖。因此,我要么弄清楚哪一方做了它,要么在实际发生之前重新加载页面重新载入

1 个答案:

答案 0 :(得分:-1)

if(window.performance)

{

    if(performance.navigation.type  == 1 )
          {
            console.log('page reloaded');
          }
}

https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API

你也可以编写javascript函数并设置cookie。

function checkFirstVisit() {
  if(document.cookie.indexOf('mycookie')==-1) {
    // cookie doesn't exist, create it now
    document.cookie = 'mycookie=1';
  }
  else {
    // not first visit, so alert
    alert('You refreshed!');
  }
}

调用身体负荷事件

   <body onload="checkFirstVisit()">