gpt4 book ai didi

node.js - 如何检查 node.js 服务器中的连接是否中止

转载 作者:IT老高 更新时间:2023-10-28 22:04:07 25 4
gpt4 key购买 nike

我正在使用 node.js 进行一些长时间的轮询。
基本上,node.js 服务器接受来自用户的请求,然后检查一些更新。如果没有更新,它会在超时后检查它们。
但是如果用户关闭了他的标签,或者转到另一个页面怎么办?就我而言,脚本继续工作。
当用户中止请求(关闭连接)时,node.js 中是否有办法检查或检测或捕获事件?

最佳答案

你需要使用 req.on('close', function(err) { ... }); 而不是 req.connection.on('close', function( err) { ... });

有一个非常重要的区别。 req.on() 为这个请求添加了一个监听器,而 req.connection.on() 则为客户端和服务器之间的(keep-alive)连接添加了一个监听器。如果你使用 req.connection.on(),每次客户端重用一个连接时,你都会为同一个连接增加一个监听器。当连接最终中止时,所有监听器都会被触发。

函数作用域通常可以让您避免搞砸服务器逻辑,但这仍然是一件危险的事情。幸运的是,至少 NodeJS 0.10.26 足够聪明,可以警告用户:

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace:
at Socket.EventEmitter.addListener (events.js:160:15)
at Socket.Readable.on (_stream_readable.js:689:33)
...

关于node.js - 如何检查 node.js 服务器中的连接是否中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com