一项应用可能会导致 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);