3

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

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

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

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

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

谢谢!

编辑:

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

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

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

4

1 回答 1

5

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

于 2012-04-03T21:40:20.380 回答