javascript - Socket.io Chat application Shows EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() -


i using socket.io , node.js plus mysql private chat application , when use socket.on('example', function(data){...}); throws such error code here.

 node) warning: possible eventemitter memory leak detected. 11 listeners added. use emitter.setmaxlisteners() increase limit. trace     @ poolconnection.eventemitter.addlistener (events.js:175:15)     @ io.on.eventconnection (/applications/mamp/htdocs/mysite/node/server.js:72:15)     @ ping.onoperationcomplete [as _callback] (/applications/mamp/htdocs/mysite/node/node_modules/mysql/lib/pool.js:99:5)     @ ping.sequence.end (/applications/mamp/htdocs/mysite/node/node_modules/mysql/lib/protocol/sequences/sequence.js:96:24)     @ ping.sequence.okpacket (/applications/mamp/htdocs/mysite/node/node_modules/mysql/lib/protocol/sequences/sequence.js:105:8)     @ protocol._parsepacket (/applications/mamp/htdocs/mysite/node/node_modules/mysql/lib/protocol/protocol.js:280:23)     @ parser.write (/applications/mamp/htdocs/mysite/node/node_modules/mysql/lib/protocol/parser.js:73:12)     @ protocol.write (/applications/mamp/htdocs/mysite/node/node_modules/mysql/lib/protocol/protocol.js:39:16)     @ socket.connection.connect (/applications/mamp/htdocs/mysite/node/node_modules/mysql/lib/connection.js:96:28)     @ socket.eventemitter.emit (events.js:96:17) 

and code in server side:-

function fetchmessages(data){         var sql = "select `msg_descr`,`msg_to` `message` (msg_to="+data[0].ichatuserid+" , msg_from="+data[1]+") or (msg_to="+data[1]+" , msg_from="+data[0].ichatuserid+") order msg_created_date desc limit 20";         eventconnection(sql, function(callback, rows){             if(callback){                 users[data[1]].emit('release msg', {messages:rows, selfid:data[0].ichatuserid});             }         });     }      //when user actibe     socket.on('load message', function(data, callback){         var repsondmsg = fetchmessages(data);     }); 

in client side:-

 chatlist.click(function(){         var __this  =   $(this);             targetdata  =   [];             __userdata  =   fetchuserdata(__this);             myid    =   myimage.data('myid');             targetdata.push(__userdata, myid);             socket.emit('load message', targetdata);             checkexistance(targetdata);     });      socket.on('release msg', function(data){             $.each(data.messages, function(){                 $.each(this, function(k,v){                     $('*[data-ichatid="'+data.selfid+'"]').children('.body_cht_box_ind').children('#chats').append($('<li>').text(v));                 })             });         }); 

the following link has explanation. https://nodejs.org/docs/latest/api/events.html#events_emitter_setmaxlisteners_n

by default eventemitters print warning if more 10 listeners added particular event. useful default helps finding memory leaks. obviously, not events should limited 10 listeners. emitter.setmaxlisteners() method allows limit modified specific eventemitter instance. value can set infinity (or 0) indicate unlimited number of listeners."

you can use this.

require('events').eventemitter.defaultmaxlisteners = infinity; 

Comments

Popular posts from this blog

Hatching array of circles in AutoCAD using c# -

ios - UITEXTFIELD InputView Uipicker not working in swift -

Python Pig Latin Translator -