summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/realtime.js10
1 files changed, 8 insertions, 2 deletions
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);
}