node.js为http请求计时

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

我正在尝试计算响应请求所需的时间

现在我在HttpServerRequest事件上创建了一个时间戳问题是httpServerResponse没有发出end,完成响应的end函数在不同的位置被调用,我不想在所有这些位置添加此代码

有更好的方法吗

var server=http.createServer; 服务器。根据“请求”,发送; 函数dispatchreq,res{ var start=Date.now; //没有这样的事件,所以从未发生过 res.on'end',函数{ 记录'requests.time',Date.now-start; }; generateResponsereq,res; }
您可以覆盖原始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);
}

是的,我正在考虑这样做,我想可能还有另一种方法。谢谢,我在考虑这么做,我想可能还有别的办法。谢谢