I know this might flag as a duplicate solution but the solution on stack overflow is not working for me.
Problem
(node:5716) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 message lis
teners added. Use emitter.setMaxListeners() to increase limit.
My codebase is huge and I facing this error sometimes I don't know why it is happening. I tried to increase the listeners limit but unfortunately, it is not working.
const EventEmitter = require('events');
const emitter = new EventEmitter()
emitter.setMaxListeners(50)
UPDATE
After Some browsing, I run this command to trace warning
node --trace-warnings index.babel.js
Turns out be my socket.io code is the problem I am using socket.io with Redis. This is the error
node:14212) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 message li
steners added. Use emitter.setMaxListeners() to increase limit
at _addListener (events.js:281:19)
at RedisClient.addListener (events.js:298:10)
at Namespace.<anonymous> (D:/newProject/services/socket.js:21:17)
at emitOne (events.js:115:13)
at Namespace.emit (events.js:210:7)
at Namespace.emit (D:
ewProject
ode_modulessocket.iolib
amespace.js:213:10)
at D:
ewProject
ode_modulessocket.iolib
amespace.js:181:14
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
this is the code (But this code is for more specific tasks it will not execute all the time).
const redis = require('redis');
const config = require('../config');
const sub = redis.createClient(config.REDIS.port, config.REDIS.host);
const pub = redis.createClient(config.REDIS.port, config.REDIS.host);
sub.subscribe('spread');
module.exports = io => {
io.on('connection', socket => {
/* To find the User Login */
let passport = socket.handshake.session.passport;
if (typeof passport !== 'undefined') {
socket.on('typing:send', data => {
pub.publish('spread', JSON.stringify(data));
});
sub.on('message', (ch, msg) => {
// This is the Exact line where I am getting this error
io.emit(`${JSON.parse(msg).commonID}:receive`, { ...JSON.parse(msg) });
});
}
});
};
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…