From 53f26a777177510bf9801759fca6197144217b60 Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Mon, 5 Oct 2015 14:32:05 +0800 Subject: Fixed cleaner might not clean user not in connected list and handle if the user socket not exist --- lib/realtime.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/realtime.js b/lib/realtime.js index d2c9fe68..5018d151 100644 --- a/lib/realtime.js +++ b/lib/realtime.js @@ -103,13 +103,19 @@ var updater = setInterval(function () { if (err) return logger.error('updater error', err); }); }, 1000); -//clean when user not in any rooms +//clean when user not in any rooms or user not in connected list var cleaner = setInterval(function () { async.each(Object.keys(users), function (key, callback) { var socket = realtime.io.sockets.connected[key]; - if (socket && (!socket.rooms || socket.rooms.length <= 0)) { + if ((!socket && users[key]) || + (socket && (!socket.rooms || socket.rooms.length <= 0))) { if (config.debug) logger.info("cleaner found redundant user: " + key); + if (!socket) { + socket = { + id: key + }; + } disconnectSocketQueue.push(socket); disconnect(socket); } -- cgit v1.2.3