如何在客户端使用javascript访问页面时检测服务器是否关闭?
具有永久保持活动标头的请求可以执行此操作,但问题是即使用户离开页面也会触发。
答案 0 :(得分:2)
也许这是一种天真的方法,但是当ajax调用失败时,你可以计算响应头的数量。例如,使用jQuery,您可以这样做:
$.ajax( {
'url': urlToTheServer,
'success': function()
{
// server is up
},
'error': function( $xhr )
{
if( $xhr.getAllResponseHeaders().length < 1 )
{
// fair probability server is down
}
}
} );
我在开发框中测试的方式是在setTimeout()
调用中包含上述内容(例如,10秒超时)。加载页面。关机服务器。然后等待超时到期并执行ajax请求。
PS。:$xhr.getAllResponseHeaders()
返回换行符分隔的标题字符串,而不是标题的数组或对象。我一开始忽略了这一点,然而,这并没有改变剧本的结果。如果字符串长度$xhr.getAllResponseHeaders()
小于1
,则不会出现响应标头。