我正在尝试响应请求需要多长时间。
现在我在 httpServer 请求事件上创建时间戳,问题是 httpServerResponse 不会发出 end 并且在不同的位置调用完成响应的结束函数,我不想在所有这些位置添加此代码。
有更好的方法吗?
var server = http.createServer();
server.on('request', dispatch);
function dispatch(req, res){
var start = Date.now();
// No such event so never fired
res.on('end', function(){
console.log('requests.time', Date.now() - start);
});
generateResponse(req, res);
}
答案 0 :(得分:4)
您可以覆盖原始的res.end()函数并从中调用原始函数:
var server = http.createServer();
server.on('request', dispatch);
function dispatch(req, res){
var start = Date.now();
var original=res.end;
res.end=function(txt,encoding){
console.log('requests.time', Date.now() - start);
original.call(this,txt,encoding);
}
generateResponse(req, res);
}
function generateResponse(req,res){
setTimeout(function(){ // simulate some processing
res.end('hi');
},1000);
}