Socket.io 连接在每次刷新时堆积起来

dzm*_*dzm 3 node.js socket.io

我将 socket.io 与 node.js 一起使用,在我的其中一个路由中,我有连接事件处理程序。

            app.io.on('connection', function(socket) {
                    console.log('connect');

                    socket.on('disconnect', function(){
                        console.log('disconnect');
                        res.end();
                    });
            });
Run Code Online (Sandbox Code Playgroud)

每次刷新调用此路由的页面时,它似乎都在不断增加,例如,如果我刷新 5 次,我将在一次刷新时在日志中得到 5 个“连接”消息。

有没有什么好的方法来限制它,让它不这样做?

谢谢!

编辑:

当我反复刷新时,出现此错误:

(节点)警告:检测到可能的 EventEmitter 内存泄漏。添加了 11 个听众。使用emitter.setMaxListeners() 增加限制

我可以增加限制,但我觉得这不是正确的解决方案。

ste*_*ewe 5

您必须将代码放在请求处理程序之外(每个请求都会调用)。此代码应该处理所有客户端(而不是每个请求)的传入连接。在您的示例中,它为每个请求创建一个新的事件侦听器,您只需要一个!