@@ -24,7 +24,7 @@
Preview
-
+
diff --git a/src/socket.io/index.js b/src/socket.io/index.js
index c9657afd95..993b9bb8ed 100644
--- a/src/socket.io/index.js
+++ b/src/socket.io/index.js
@@ -94,7 +94,11 @@ Sockets.init = function() {
});
}
- io.sockets.in('global').emit('user.isOnline', isUserOnline(uid));
+ socket.broadcast.emit('user.isOnline', null, {
+ online: isUserOnline(uid),
+ uid: uid,
+ timestamp: Date.now()
+ });
});
});
@@ -114,7 +118,11 @@ Sockets.init = function() {
}
}
- io.sockets.in('global').emit('user.isOnline', isUserOnline(uid));
+ socket.broadcast.emit('user.isOnline', null, {
+ online: isUserOnline(uid),
+ uid: uid,
+ timestamp: Date.now()
+ });
emitOnlineUserCount();
@@ -190,7 +198,6 @@ Sockets.emitUserCount = function() {
});
};
-// Use sessionData.server.sockets.in() instead of this method.
Sockets.in = function(room) {
return io.sockets.in(room);
};
@@ -239,15 +246,15 @@ function updateRoomBrowsingText(roomName) {
var uids = getUidsInRoom(Sockets.rooms[roomName]),
anonymousCount = getAnonymousCount(roomName);
- if (uids.length === 0) {
- io.sockets.in(roomName).emit('get_users_in_room', { users: [], anonymousCount: anonymousCount });
- } else {
- user.getMultipleUserFields(uids, ['uid', 'username', 'userslug', 'picture'], function(err, users) {
- if(!err) {
- io.sockets.in(roomName).emit('get_users_in_room', { users: users, anonymousCount: anonymousCount });
- }
- });
- }
+ user.getMultipleUserFields(uids, ['uid', 'username', 'userslug', 'picture'], function(err, users) {
+ if(!err) {
+ io.sockets.in(roomName).emit('get_users_in_room', {
+ users: users,
+ anonymousCount: anonymousCount,
+ room: roomName
+ });
+ }
+ });
}
Sockets.emitTopicPostStats = emitTopicPostStats;
diff --git a/src/socket.io/meta.js b/src/socket.io/meta.js
index 9c8d2b8ed8..106c6d5621 100644
--- a/src/socket.io/meta.js
+++ b/src/socket.io/meta.js
@@ -91,6 +91,9 @@ SocketMeta.rooms.enter = function(socket, data) {
if (data.leave && server.rooms[data.leave] && server.rooms[data.leave][socket.id] && data.enter !== data.leave) {
delete server.rooms[data.leave][socket.id];
+ if(!Object.keys(server.rooms[data.leave]).length) {
+ delete server.rooms[data.leave];
+ }
}
}