繁体   English   中英

如何在NodeJS中测量http.ClientRequest响应时间?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM