diff --git a/public/src/forum/users.js b/public/src/forum/users.js
index f4e9ff988d..3021ad36dc 100644
--- a/public/src/forum/users.js
+++ b/public/src/forum/users.js
@@ -81,19 +81,28 @@ define(function() {
});
socket.on('user.isOnline', function(err, data) {
- if(getActiveSection().indexOf('online') === 0 && !loadingMoreUsers) {
+ var section = getActiveSection();
+ if((section.indexOf('online') === 0 || section.indexOf('users') === 0) && !loadingMoreUsers) {
startLoading('users:online', 0, true);
- socket.emit('user.getOnlineAnonCount', {} , function(err, anonCount) {
- if(parseInt(anonCount, 10) > 0) {
- $('#users-container .anon-user').removeClass('hide');
- $('#online_anon_count').html(anonCount);
- } else {
- $('#users-container .anon-user').addClass('hide');
- }
- });
+ updateAnonCount();
}
});
+ socket.on('user.anonDisconnect', updateAnonCount);
+ socket.on('user.anonConnect', updateAnonCount)
+
+ function updateAnonCount() {
+ socket.emit('user.getOnlineAnonCount', {} , function(err, anonCount) {
+
+ if(parseInt(anonCount, 10) > 0) {
+ $('#users-container .anon-user').removeClass('hide');
+ $('#online_anon_count').html(anonCount);
+ } else {
+ $('#users-container .anon-user').addClass('hide');
+ }
+ });
+ }
+
function onUsersLoaded(users, emptyContainer) {
var html = templates.prepare(templates['users'].blocks['users']).parse({
users: users
diff --git a/public/templates/topic.tpl b/public/templates/topic.tpl
index 1643fc76f1..f47a76403a 100644
--- a/public/templates/topic.tpl
+++ b/public/templates/topic.tpl
@@ -54,7 +54,7 @@
diff --git a/src/socket.io/admin.js b/src/socket.io/admin.js
index b4f292af19..b2f6b73742 100644
--- a/src/socket.io/admin.js
+++ b/src/socket.io/admin.js
@@ -64,11 +64,12 @@ SocketAdmin.user.createUser = function(socket, user, callback) {
SocketAdmin.user.banUser = function(socket, theirid) {
admin.user.banUser(socket.uid, theirid, socket, function(isBanned) {
if(isBanned) {
- if(index.userSockets[theirid]) {
- for(var i=0; i
0;
+ return Sockets.getUserSockets(uid).length > 0;
}
Sockets.updateRoomBrowsingText = updateRoomBrowsingText;
@@ -292,11 +299,8 @@ function emitTopicPostStats(callback) {
Sockets.emitOnlineUserCount = emitOnlineUserCount;
function emitOnlineUserCount(callback) {
- var anon = Sockets.userSockets[0] ? Sockets.userSockets[0].length : 0;
- var registered = Object.keys(Sockets.userSockets).length;
- if (anon) {
- registered = registered - 1;
- }
+ var anon = Sockets.getOnlineAnonCount(0);
+ var registered = Sockets.getConnectedClients().length;
var returnObj = {
users: registered + anon,
diff --git a/src/socket.io/modules.js b/src/socket.io/modules.js
index 4a89b32ff4..4d7e8f53d5 100644
--- a/src/socket.io/modules.js
+++ b/src/socket.io/modules.js
@@ -113,39 +113,29 @@ SocketModules.chats.send = function(socket, data) {
usersData[0].uid = socket.uid;
usersData[1].uid = touid;
- Messaging.parse(msg, socket.uid, socket.uid, usersData[1], usersData[0], true, function(parsed) {
- Messaging.addMessage(socket.uid, touid, msg, function(err, message) {
- var numSockets = 0,
- x;
-
- if (server.userSockets[touid]) {
- numSockets = server.userSockets[touid].length;
-
- for (x = 0; x < numSockets; ++x) {
- server.userSockets[touid][x].emit('event:chats.receive', {
- fromuid: socket.uid,
- username: username,
- message: parsed,
- timestamp: Date.now()
- });
- }
- }
-
- if (server.userSockets[socket.uid]) {
-
- numSockets = server.userSockets[socket.uid].length;
-
- for (x = 0; x < numSockets; ++x) {
- server.userSockets[socket.uid][x].emit('event:chats.receive', {
- fromuid: touid,
- username: toUsername,
- message: parsed,
- timestamp: Date.now()
- });
- }
- }
- });
- });
+ Messaging.parse(msg, socket.uid, socket.uid, usersData[1], usersData[0], true, function(parsed) {
+ Messaging.addMessage(socket.uid, touid, msg, function(err, message) {
+
+
+ server.getUserSockets(touid).forEach(function(s) {
+ s.emit('event:chats.receive', {
+ fromuid: socket.uid,
+ username: username,
+ message: parsed,
+ timestamp: Date.now()
+ });
+ });
+
+ server.getUserSockets(socket.uid).forEach(function(s) {
+ s.emit('event:chats.receive', {
+ fromuid: touid,
+ username: toUsername,
+ message: parsed,
+ timestamp: Date.now()
+ });
+ });
+ });
+ });
});
};
diff --git a/src/topics.js b/src/topics.js
index 653ffb2fc3..479c4401a4 100644
--- a/src/topics.js
+++ b/src/topics.js
@@ -647,8 +647,7 @@ var async = require('async'),
var websockets = require('./socket.io');
if (!uids) {
- clients = websockets.getConnectedClients();
- uids = Object.keys(clients);
+ uids = websockets.getConnectedClients();
} else if (!Array.isArray(uids)) {
uids = [uids];
}