指定された時間内にサーバーが応答しない場合 (ネットワーク間の接続に問題があるか、サーバーに障害が発生したか、ネットワーク ファイアウォールがクライアントとサーバー間の接続をブロックしたことが考えられます)、応答がタイムアウトし、同時に ServerResponse オブジェクトのタイムアウト イベントがトリガーされます。
response.setTimeout(time,[callback]);
setTimeout でコールバック関数を指定することはできません。時間監視を使用してコールバック関数を指定することもできます。
タイムアウト コールバック関数が指定されていない場合は、タイムアウトが発生し、http クライアントに接続されているソケット ポートが自動的に閉じられます。タイムアウト コールバック関数が指定されている場合は、タイムアウトの代わりにコールバック関数が呼び出されます。 http クライアントに接続されているソケット ポートは自動的に閉じられます。
var http=require("http");
varserver=http.createServer(function(req,res){
If(req.url!=="/favicon.ico"){
//タイムアウト監視
/*res.setTimeout(1000);
res.on("タイムアウト",function(){
console.log("応答タイムアウト。");
});*/
// タイムアウト時の直接コールバック
res.setTimeout(1000,function(){
console.log("応答タイムアウト。");
});
setTimeout(function(){
res.setHeader("Content-Type", "text/html");
res.write("");
res.write("こんにちは");
res.end();
},2000);
}
});
server.listen(1337,"localhost",function(){
console.log("監視開始"server.address().port "...");
});
コードの実行結果:
タイムアウトコールバック関数を削除した後: