如果在指定的時間內服務器沒有做出響應(可能是網絡間連接出現(xiàn)問題,也可能是因為服務器故障或網絡防火墻阻止了客戶端與服務器的連接),則響應超時,同時觸發(fā)http.ServerResponse對象的timeout事件.
response.setTimeout(time,[callback]);
也可以不在setTimeout中指定回調函數,可以使用時間的監(jiān)聽的方式來指定回調函數.
如果沒有指定超時的回調函數,那么出現(xiàn)超時了,將會自動關閉與http客戶端連接的socket端口.如果指定了超時的回調函數,那么超時了,將會出現(xiàn)調用回調函數,而不會自動關閉與http客戶端連接的socket端口.
復制代碼 代碼如下:
var http=require("http");
var server=http.createServer(function(req,res){
if(req.url!=="/favicon.ico"){
//超時監(jiān)聽
/*res.setTimeout(1000);
res.on("timeout",function(){
console.log("響應超時.");
});*/
//超時直接回調
res.setTimeout(1000,function(){
console.log("響應超時.");
});
setTimeout(function(){
res.setHeader("Content-Type","text/html");
res.write("<html><head><meta charset='utf-8' /></head>");
res.write("你好");
res.end();
},2000);
}
});
server.listen(1337,"localhost",function(){
console.log("開始監(jiān)聽"+server.address().port+"......");
});
運行代碼結果:
刪除超時的回調函數后:
更多信息請查看IT技術專欄