2013-08-07 11 views
7

olsun? Doc, response.statusCode'dan bahseder. Kütüphane kaynak koduna bakıyorum ayrıca belgesiz yanıtı görüyorum.başlıklar ve response.href, ancak responseTime veya benzeri görmüyorum.nodejs isteği kütüphane, nodejs <code>request</code> kütüphaneyi kullanma yanıt süresini

veya request için yanıt süresi sağlayan alternatif bir kitaplık var mı?

ps: Bunun gibi bir şey yapabileceğimi biliyorum, ancak bu bir çözüm değil, pek çok uyumsuz istekte bulunduğum için ve her istek başlatıldığında kontrol edemiyorum. sizin için yapacak

var timedReq = function(url, next) { 
    var start = new Date(); 
    request(url, function(err, res, body) { 
    res.responseTime = new Date() - start; 
    next(err, res, body); 
    }); 
}; 

gibi

var request = require('request'); 
var start = new Date(); 
request('http://example.com', function (error, response, body) { 
    ... 
    var responseTime = new Date() - start; 
}) 

cevap

10

istek kütüphane sizin için (docs) zamanlama yapabilirsiniz: Soru ima

request.get({ 
    url : 'http://example.com', 
    time : true 
},function(err, response){ 
    console.log('Request time in ms', response.elapsedTime); 
}); 

olarak, yaklaşması ile sorunları alabilir Bir zamanlayıcıyı başlatmak için, request numaralı telefonu arayarak ve ardından geri aramadaki zamanlayıcıyı durdurduktan sonra:

var start = new Date(); 
request.get('http://example.com', function(err, response){ 
    // NOT GOOD 
    console.log('Request time plus 5 seconds', new Date() - start); 
}); 
require('sleep').sleep(5); // time-consuming synchronous action 
6

şey. Bu, yeni bir kütüphane bulmaktan daha kolay olduğu kadar küçük gözüküyor.

+1

Tarih yerine http://nodejs.org/api/process.html#process_process_hrtime kullanmanız önerilir. Http://arrowbreaker.com/demos/sup için kullanıyorum ve oldukça doğru sonuçlar veriyor. – Pickels

+0

@Pickels Bunu duymamıştım. Bu [saniye, ns] dizisiyle uğraşmanın zorluklarını benim örneğime getirmek istemiyorum, ama bu iyi bir fikir gibi görünüyor. –

+5

Hiç de karmaşık değil! 'var start = process.hrtime();' ve 'res.responseTime = parseInt (process.hrtime (başlat) [1]/10000000, 10);' Tamam, yalan söyledim. – Pickels

2

Date() kullanmak yerine process.hrtime'yi de kullanabilirsiniz. Özellikle hrtime kullanan bu tür davalar için bir kütüphanem var. Kütüphane adı exectimer.

Böyle kullanabiliriz:

var timedReq = function(url, next) { 
    var tick = new t.Tick("responseTime"); 
    tick.start(); 
    request(url, function(err, res, body) { 
    tick.stop(); 
    next(err, res, body); 
    }); 
}; 

// when ready check the results with this: 
var responseTime = t.timers.responseTime; 
console.log(responseTime.min()); // minimal response time 
console.log(responseTime.max()); // minimal response time 
console.log(responseTime.mean()); // mean response time 
console.log(responseTime.median()); // median response time