使用`hapi`时如何在响应完成时收到通知?

时间:2016-10-06 16:34:20

标签: node.js hapijs

我尝试将一些中间件从SharedPreferences迁移到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,因此无法向其添加侦听器。

建议?

3 个答案:

答案 0 :(得分:0)

 server.ext('onPreResponse', function (request, reply) {
    request.response.once('finish', function () {    

    });   
    reply.continue(); 
});

答案 1 :(得分:0)

您可以使用request.raw.req的{​​{1}}事件:

end

答案 2 :(得分:0)

request.response.events.once('finish', () => console.log('DONE!!!'));