我正在使用带有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()来增加限制
我可以增加限制,但我觉得这不是正确的解决方案。
答案 0 :(得分:4)
您必须将代码放在请求处理程序之外(在每个请求上调用它)。 此代码应该处理所有客户端的传入连接(不是每个请求)。 在您的示例中,它会在每个请求上创建一个新的事件侦听器,您只需要一个!