node.js为http请求计时
我正在尝试计算响应请求所需的时间 现在我在HttpServerRequest事件上创建了一个时间戳问题是httpServerResponse没有发出end,完成响应的end函数在不同的位置被调用,我不想在所有这些位置添加此代码 有更好的方法吗 var server=http.createServer; 服务器。根据“请求”,发送; 函数dispatchreq,res{ var start=Date.now; //没有这样的事件,所以从未发生过 res.on'end',函数{ 记录'requests.time',Date.now-start; }; generateResponsereq,res; }node.js为http请求计时,node.js,timing,Node.js,Timing,我正在尝试计算响应请求所需的时间 现在我在HttpServerRequest事件上创建了一个时间戳问题是httpServerResponse没有发出end,完成响应的end函数在不同的位置被调用,我不想在所有这些位置添加此代码 有更好的方法吗 var server=http.createServer; 服务器。根据“请求”,发送; 函数dispatchreq,res{ var start=Date.now; //没有这样的事件,所以从未发生过 res.on'end',函数{ 记录'request
您可以覆盖原始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);
}
您可以覆盖原始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);
}
是的,我正在考虑这样做,我想可能还有另一种方法。谢谢,我在考虑这么做,我想可能还有别的办法。谢谢