Fastify 如何计算响应时间?
How Fastify caculate responseTime?
上下文:我对请求和响应时间感兴趣。
第一种知道请求何时由 Fastify 管理的方法添加一个钩子,例如
fastify.addHook('onRequest', (request, reply, done) => {
request.onRequestTimestamp = Date.now();
done();
});
但信息已经存在:启用 Fastify 日志
fastify = fastify({ logger: true });
我们可以看到例子
{
"level": 30,
"time": 1620659712059,
"pid": 5673,
"hostname": "myhostname",
"reqId": "req-1",
"res": { "statusCode": 200 },
"responseTime": 14.528815001249313,
"msg": "request completed"
}
所以我可以假设 Fastify 本身至少在某处存储了请求到达 HTTP 服务器的信息,但我找不到位置。
问题:
1- fastify 如何计算响应时间?
2- Fastify 是否存储(可能在请求对象中)请求时间戳?
您可以通过 reply.getResponseTime()
方法访问信息并在您的处理程序中添加 onResponse
挂钩或跟踪宏步骤
const fastify = require('fastify')({ logger: true })
fastify.get('/', (request, reply) => {
const timeOne = reply.getResponseTime()
setTimeout(() => {
const timeTwo = reply.getResponseTime()
reply.send({
timeOne, timeTwo
})
}, 1000)
})
fastify.listen('8080')
How fastify calculate the responseTime?
它使用私有 Symbols
隐藏 reply
对象中的值
上下文:我对请求和响应时间感兴趣。
第一种知道请求何时由 Fastify 管理的方法添加一个钩子,例如
fastify.addHook('onRequest', (request, reply, done) => {
request.onRequestTimestamp = Date.now();
done();
});
但信息已经存在:启用 Fastify 日志
fastify = fastify({ logger: true });
我们可以看到例子
{
"level": 30,
"time": 1620659712059,
"pid": 5673,
"hostname": "myhostname",
"reqId": "req-1",
"res": { "statusCode": 200 },
"responseTime": 14.528815001249313,
"msg": "request completed"
}
所以我可以假设 Fastify 本身至少在某处存储了请求到达 HTTP 服务器的信息,但我找不到位置。
问题:
1- fastify 如何计算响应时间?
2- Fastify 是否存储(可能在请求对象中)请求时间戳?
您可以通过 reply.getResponseTime()
方法访问信息并在您的处理程序中添加 onResponse
挂钩或跟踪宏步骤
const fastify = require('fastify')({ logger: true })
fastify.get('/', (request, reply) => {
const timeOne = reply.getResponseTime()
setTimeout(() => {
const timeTwo = reply.getResponseTime()
reply.send({
timeOne, timeTwo
})
}, 1000)
})
fastify.listen('8080')
How fastify calculate the responseTime?
它使用私有 Symbols
reply
对象中的值