2012-02-04 18 views
2

リクエストに応答するのにかかる時間を試行しています。node.jsタイミングhttpリクエスト

は、今のところ私はこの問題はhttpServerResponseエンドと応答を終了するエンド機能を排出しないが、異なる場所で呼び出されていることであるhttpServerの要求イベントのタイムスタンプを作成して、私はしたくありませんこれらの場所にこのコードを追加してください。

これを行うより良い方法はありますか?

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

関連する問題