gpt4 book ai didi

javascript - 如何测量 NodeJS 中的 http.ClientRequest 响应时间?

转载 作者:搜寻专家 更新时间:2023-11-01 00:43:24 24 4
gpt4 key购买 nike

我正在从我的 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();

我想知道我的请求需要多长时间——从请求通过网络的那一刻(或者我能到达的最接近的那一刻)开始(而不是创建 promise 的那一刻),直到“响应结束”事件开始的那一刻。

我在寻找最接近的时刻/事件时遇到了一些麻烦,我可以 Hook 以开始测量时间。 Http 客户端 socket event 是我迄今为止最好的选择,但它的描述:

Emitted after a socket is assigned to this request.

并不能真正说明那是否是我正在寻找的事件。所以,我的问题是 - 我这样做是否正确,或者是否有更好的事件我可以使用(或者甚至是更好的方法来完成整个事情)?谢谢。

最佳答案

是的,我的理解是 socket 事件是正确的选择。

一些证明:在 Node.js HTTP 代码中,this.emit('socket')发生在 this.socket.write(data, encoding) 之前.

那里有一张我不确定的支票:

if (!this.socket.writable) return; // XXX Necessary?

因此,在您的 socket 事件处理程序中,您可能想要执行相同的检查,看看它是否会返回套接字不可写。

关于javascript - 如何测量 NodeJS 中的 http.ClientRequest 响应时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26977272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com