一项应用可能会导致 web server 重启, 我需要检测这个重启过程,重启完毕能够给用户以通知
思路: js的生存期是在客户端,即使服务器已经重启,js仍可运行,所以用js是可以实现的 因为server上存在着favicon.ico文件,可以以检测是否能取得这个文件,来判断网络的通断。
代码如下:
//@author notsobad
var is_reboot = false;
//每1.5s 一个循环,检测网络状态
var loop = setInterval(function(){
var img = new Image();
img.onerror = function(){
//无法取到图片,说明 Server was down!
if(!is_reboot){
alert('Server was reboot!');
is_reboot = true;
}
};
img.onload = function(){
if(is_reboot){
//网络重新连接
alert('Reboot done!');
top.location.href = '/logout';
}
}
//尝试获取favicon.ico, 假定这个文件是存在的
img.src = "/favicon.ico?r=" + Math.random();
}, 1500);