首页 > 解决方案 > 检测到套接字 io 可能的 EventEmitter 内存泄漏

问题描述

一旦事件完成,我想删除监听器以避免套接字 io 中的这个问题。

我收到此错误

MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 个连接侦听器。使用emitter.setMaxListeners() 增加限制

我曾尝试使用 removeAllListeners / removeListener / off 但它们都不起作用。

const io = socket(httpServer); 

(async () => {
  await io.on('connection', async function (client) {

       // Some Code //

        await client.emit('message', "Done")
        io.removeAllListeners("connection")
    })
})

标签: node.jssocket.io

解决方案


如果您想要与单个客户端的单个套接字连接,请使用await io.once而不是。await io.on否则,它会为服务器端的每个请求生成多个服务器侦听器实例。


推荐阅读