我正在使用socket.io在我的应用程序中使用hapijs进行实时功能。当我尝试在hapijs路由中添加服务器端的列表,如果我重新加载相同的路由/页面10次或更多,那么它开始向我显示错误(node:9004) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 board_5a40a863a7fbf12cf8a7f1b8_element_sorted listeners added. Use emitter.setMaxListeners() to increase limit
。您还可以在附加的屏幕截图中看到错误。
我首先尝试了以下每个代码来删除列表,然后使用socket.on('eventname', callback)
将其添加回来:
io.sockets.removeListner("eventname")
io.removeListner("eventname")
socket.removeListner("eventname")
io.sockets.removeAllListners()
io.removeAllListners()
socket.removeAllListners()
但每次removeAllListners/removeListner is not a function
我都会收到错误。
我还尝试使用以下每个代码将maxlistners的限制设置为无限制:
io.setMaxListeners(0);
io.sockets.setMaxListeners(0);
socket.setMaxListeners(0);
但我仍然得到memory leak detected
的同样错误。那么有人可以告诉我解决方案。我最好先遵循先删除事件监听器然后再设置它的方法。但我不知道需要调用哪个函数。 :(
此外,我还想了解更多信息,这是一种好方法,是为每个用户创建一个新的独特事件监听器,而不是为所有用户创建一个公共事件监听器吗?
例如,我有一个拥有100万用户的聊天应用。
但我仍然不确定应该遵循哪一个。 所以,任何人都可以指导我这件事。任何帮助表示赞赏。