我正在尝试创建一个记录响应时间和状态代码并将其发送到数据库的中间件.但是,我不确定要使用什么事件.在节点的文档中有一个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()
})
Run Code Online (Sandbox Code Playgroud)
只有header触发,它确实返回正确的res.statusCode.
我的问题:
close解雇?为什么要header解雇?有一个完成事件,它在发送响应时发出.
app.use(function(req, res,next){
res.on('finish', function(){
console.log('the response has been sent');
});
next();
});
Run Code Online (Sandbox Code Playgroud)
close仅在调用response.end()之前终止连接时发出事件。
header事件由触发connect。这不是node.js http.ServerResponse本机事件。
看connect responseTime中间件。我认为它应该对您有帮助。
更新:
这是header事件文档https://github.com/senchalabs/connect/blob/gh-pages/tests.md#patch
heder从https://github.com/senchalabs/connect/blob/master/lib/patch.js代理的writeHead方法触发connect
| 归档时间: |
|
| 查看次数: |
12496 次 |
| 最近记录: |