[英]How to measure http.ClientRequest response time in NodeJS?
我正在从NodeJS应用程序创建http请求,如下所示:
var start;
var req = http.request(options, function (res) {
res.setEncoding('utf8');
var body = '';
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function () {
var elapsed = process.hrtime(start)[1] / 1000000; // in milliseconds
console.log(elapsed);
// whatever
});
});
req.on('socket', function (res) {
start = process.hrtime();
});
req.on('error', function (res) {
// whatever
});
if (props.data) req.write(props.data);
req.end();
我想找出我的请求要花多长时间-从请求通过网络的那一刻(而不是从创建诺言的那一刻开始)到“响应结束”事件开始。
我在寻找最接近的时刻/事件时遇到了麻烦,我可以将其挂接到开始测量时间上。 到目前为止,Http客户端套接字事件是我最好的选择,但它的描述是:
在将套接字分配给此请求后发出。
并没有真正告诉我这是否是我要寻找的事件。。所以,我的问题是-我这样做是否正确,还是可以使用一个更好的事件(甚至可以做一个更好的事情)? 谢谢。
是的,我的理解是socket
事件是解决之道。
为了证明这一点:在Node.js HTTP代码中, this.emit('socket')
恰好在this.socket.write(data, encoding)
。
有一个我不确定的检查:
if (!this.socket.writable) return; // XXX Necessary?
因此,在您的socket
事件处理程序中,您可能希望执行相同的检查,并查看套接字是否不可写的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.