我正在尝试将一些中间件从express
迁移到hapi
。下面是express
中的内容
const express = require('express')
const server = express()
server.use(function (req, res, next) {
const start = Date.now()
res.on('finish', () => {
console.log('Timestamp', Date.now() - start)
})
next()
})
//...
在使用hapi
时,我找不到一种很好的方法来在同一个闭包内响应完成时得到通知,这样我就可以使用我在请求开始时设置的初始数据……
我得到的最接近的是:
const Hapi = require('hapi')
const server = new Hapi.Server()
server.ext('onPreResponse', (request, reply) => {
const start = Date.now()
request.response.once('finish', () => {
console.log('Timestamp', Date.now() - start)
})
return reply.continue()
})
// ...
但是错误响应似乎将request.response
设置为null
,因此我无法向其添加侦听器。
有什么建议吗?
发布于 2016-10-06 17:41:07
server.ext('onPreResponse', function (request, reply) {
request.response.once('finish', function () {
});
reply.continue();
});
发布于 2016-10-07 08:52:07
您可以使用request.raw.req
的end
事件:
server.ext('onPreResponse', (request, reply) => {
request.raw.req.once('end', () => console.log('DONE!!!'));
return reply.continue();
});
发布于 2018-07-05 17:55:39
request.response.events.once('finish', () => console.log('DONE!!!'));
https://stackoverflow.com/questions/39901335
复制相似问题