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

时间:2012-04-03 20:58:15

标签: node.js socket.io

我正在使用带有node.js的socket.io并且在我的一个路由中,我有连接事件处理程序。

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

                    socket.on('disconnect', function(){
                        console.log('disconnect');
                        res.end();
                    });
            });

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

是否有一种很好的方法来限制它,所以它不会这样做?

谢谢!

编辑:

当我反复刷新时,我收到此错误:

  

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

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

1 个答案:

答案 0 :(得分:4)

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