响应事件上的Node.js / Express
我正在尝试创build一个logging响应时间和状态代码并将其发送到数据库的中间件。 但是,我不确定要使用什么事件。 在节点的文档中有一个close
事件,但它从来没有被解雇。 end
也不起作用。 但是, header
,但我找不到任何文件。
app.use(function(req, res, next) { res.on('close', function() { console.log('close') }) res.on('end', function() { console.log('end') }) res.on('header', function() { console.log('header') console.log(res.statusCode) }) next() })
只有header
触发,并且它返回正确的res.statusCode。
我的问题:
- 为什么不
close
射击? 为什么是header
射击? - 这是一个可靠的方法去?
只有在response.end()被调用之前连接被终止的情况下才close
事件。 由connect
触发的header
事件。 这不是node.js http.ServerResponse本地事件。
看看connect
responseTime
中间件。 我认为它应该可以帮助你。
更新 :
这是header
事件文档https://github.com/senchalabs/connect/blob/gh-pages/tests.md#patch
heder从writeHead方法代理通过connect
https://github.com/senchalabs/connect/blob/master/lib/patch.js
有一个结束事件 ,当响应被发送时它被发射。
app.use(function(req, res,next){ res.on('finish', function(){ console.log('the response has been sent'); }); next(); });