2012-02-04 139 views
2

我想時間多長時間來回應請求。node.js計時http請求

現在,我創建了的httpserver請求事件時間戳的問題是,httpServerResponse不發出年底和終端功能來完成的響應被稱爲在不同的位置,我不想要在所有這些位置添加此代碼。

有沒有更好的方法來做到這一點?

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); 
} 

回答

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); 
} 
+0

是的,我在想這樣做,我認爲有可能是另一種方式。謝謝 – Paul 2012-02-05 09:48:25