From a7d32ea752390726a3404a9e5aabbbd7bdecc8cc Mon Sep 17 00:00:00 2001 From: coderaiser Date: Fri, 24 Jan 2014 07:56:15 -0500 Subject: [PATCH] fix(socket) add removeListeners --- lib/server/socket.js | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/lib/server/socket.js b/lib/server/socket.js index 2eb8c0ac..23030208 100644 --- a/lib/server/socket.js +++ b/lib/server/socket.js @@ -17,7 +17,7 @@ CLOUDCMD = mainpackage.name, ClientFuncs = [], ClientDirs = [], - OnMessageFuncs = [], + Clients = [], INFO_LOG_LEVEL = 2, ENV = process.env, WIN32 = main.WIN32, @@ -77,20 +77,28 @@ ]); lRet = io.sockets.on('connection', function (socket) { + var onDisconect, onConnect; + ++lConnNum; - if (!OnMessageFuncs[lConnNum]) { + if (!Clients[lConnNum]) { lMsg = log(lConnNum, 'connected\n'); jsonSend(socket, { stdout : lMsg }); - OnMessageFuncs[lConnNum] = onMessage(lConnNum, socket); - lConn_func = OnMessageFuncs[lConnNum]; + Clients[lConnNum] = true; + onConnect = onMessage(lConnNum, socket); + onDisconect = Util.retFunc(disconnect, lConnNum); - socket.on('message', lConn_func); - socket.on('disconnect', Util.call(disconnect, lConnNum)); + socket.on('message', onConnect); + socket.on('disconnect', function() { + socket.removeListener('message', onConnect); + socket.removeListener('disconnect', onDisconect); + + socket = null; + }); } else { lMsg = log(lConnNum, ' in use. Reconnecting...'); @@ -107,17 +115,11 @@ return lRet; }; - function disconnect(pParams) { - var lConnNum, lRet = Util.checkObj(pParams, ['params']); - - if (lRet) { - lConnNum = pParams.params; - OnMessageFuncs [lConnNum] = - ClientFuncs [lConnNum] = null; - - log(lConnNum, 'disconnected'); - } + function disconnect(connNum) { + OnMessageFuncs [connNum] = + ClientFuncs [connNum] = null; + log(connNum, 'disconnected'); } /**