如何测量 http.NodeJS 中的 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
事件处理程序中,您可能希望执行相同的检查,并查看是否返回套接字不可写。
相关文章:
- 如何从NodeJS中的模块返回数组
- nodeJS中的uglify js“;找不到模块“”;
- 使用Express4将数组从Nodejs中的app.js传递到routes/index.js
- 从Nodejs中的函数返回数组,并将其发送到ejs视图
- NodeJS中的MySQL不适用于INSERT INTO中的多个语句
- nodejs中的socket.io客户端
- NodeJS中的高效深度复制
- NodeJS中的异步与同步
- NodeJS中的Parse Json文件在Node中显示意外结果
- 无法循环通过NodeJS中的JSON对象
- NodeJS中的事件,事件正在setInterval内发出,但不能没有setInterval
- 如何在nodejs中的async.each中进行同步http调用
- 如何知道我的NODEJS中的哪个javascript版本
- 如何通过回调访问nodejs中的mongodb计数结果
- 如何在nodejs中的MySQL查询中使用多个变量
- nodejs中的Javascript全局变量和属性-全局属性有时会被删除
- Nodejs中的async/await替换
- MQTT实时馈送到NodeJS中的html页面
- 如何限制用户访问ExpressJS/NodeJS中的静态html文件
- NodeJS中的多个嵌入循环