捕获HTTP响应事件

我正在构buildNode Web应用程序(使用Express)并尽可能使所有内容都干,我自动获取每个请求的数据库连接,但是我也需要释放它(回到池)。

我可以在每个path上手动执行,但这只会污染代码。 我认为一旦响应完成生成或发送,我应该听服务器事件并释放它。 我有什么select? 响应完成后,哪些事件(以及哪些对象(应用程序,请求或其他)被触发?

res是从EventEmitterinheritance的,并且可以使用默认事件以及可以发出自己的事件。
所以最常见的一个是finish (在node.0.8.12和更早的end )事件:

 res.on('finish', function() { // request processing finished }); 

如果您愿意,您可以附加该事件的所有请求,或者在其根源早期。
此外,您可以创build中间件,这将获得数据库连接,并附加finish事件,可能超时。 然后你将需要的是将这个中间件添加到路由中,所以最less的重复编码。

同时,我build议您不要为每个请求创build数据库连接,因为这是一个很大的开销和不必要的套接字以及IO处理程序的使用。 您可以自由使用单一的连接,从性能的angular度来看,效率会更高。