クライアントがjavascriptのあるページにアクセスしたときにサーバーがシャットダウンしたかどうかを検出するにはどうすればよいですか?
永久に存続するヘッダーを持つリクエストはそれを行うことができますが、問題は、ユーザーがページから離れても起動することです。
クライアントがjavascriptのあるページにアクセスしたときにサーバーがシャットダウンしたかどうかを検出するにはどうすればよいですか?
永久に存続するヘッダーを持つリクエストはそれを行うことができますが、問題は、ユーザーがページから離れても起動することです。
これは少し単純なアプローチかもしれませんが、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
、応答ヘッダーは存在しませんでした。