Node.js/Express on响应事件
我试图创建一个中间件,记录响应时间和状态代码,并将其发送到数据库。但是,我不确定使用什么事件。在节点的文档中有一个Node.js/Express on响应事件,node.js,Node.js,我试图创建一个中间件,记录响应时间和状态代码,并将其发送到数据库。但是,我不确定使用什么事件。在节点的文档中有一个close事件,但它从未被触发结束也不起作用。然而,header有,但我找不到任何文档 app.use(function(req, res, next) { res.on('close', function() { console.log('close') }) res.on('end', function() { console.log('end')
close
事件,但它从未被触发<代码>结束也不起作用。然而,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()
})
只有标题
激发,并且它确实返回正确的res.statusCode
我的问题是:
没有关闭
点火?为什么header
正在点火close
仅当在调用response.end()之前终止连接时才会发出事件。
标题
由触发的事件。这不是node.js http.ServerResponse本机事件
查看connect
中间件。我想这应该对你有帮助
更新:
下面是标题
事件文档
heder
从由connect
代理的writeHead方法激发,当响应发送时发出
app.use(function(req, res,next){
res.on('finish', function(){
console.log('the response has been sent');
});
next();
});
Node的哪个版本?HTTP,还是HTTPS?暗示这项计划会有所不同。它也可能只是节点中的错误/回归。另外:…而且,它显示为http。节点V0.8.8。奇怪的是
结束
或关闭
都不起作用。你认为我可以使用finish
而不出现任何问题吗?是的,这是我了解标题的地方,但我找不到任何关于它的文档。注意:这并不意味着客户已经收到任何东西。此事件是否可以访问req
或res
对象?@pir您可以从外部函数访问req和res。如果在finish
事件的嵌套处理程序函数中再次引用它们,它们仍然有效。