diff --git a/lib/realtime.js b/lib/realtime.js index d2c9fe68d..5018d151a 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); }