diff --git a/public/src/sockets.js b/public/src/sockets.js index 3d0c3bb7ac..1d606407f7 100644 --- a/public/src/sockets.js +++ b/public/src/sockets.js @@ -17,26 +17,31 @@ app.isConnected = false; socket = io(config.websocketAddress, ioParams); - socket.on('connect', onSocketConnect); + socket.on('connect', onConnect); socket.on('reconnecting', onReconnecting); + socket.on('disconnect', onDisconnect); + socket.on('reconnect_failed', function() { // Wait ten times the reconnection delay and then start over setTimeout(socket.connect.bind(socket), parseInt(config.reconnectionDelay, 10) * 10); }); - socket.on('event:connect', onEventConnect); - - socket.on('event:disconnect', onEventDisconnect); - socket.on('event:banned', onEventBanned); socket.on('event:logout', app.logout); socket.on('event:alert', app.alert); - function onSocketConnect() { + function onConnect() { + app.isConnected = true; + + if (!reconnecting) { + app.showLoginMessage(); + $(window).trigger('action:connected'); + } + if (reconnecting) { var reconnectEl = $('#reconnect'); @@ -48,7 +53,6 @@ app.isConnected = false; socket.emit('meta.reconnected'); - app.isConnected = true; $(window).trigger('action:reconnected'); setTimeout(function() { @@ -91,7 +95,7 @@ app.isConnected = false; app.enterRoom(room); } - function onReconnecting(attempt) { + function onReconnecting() { reconnecting = true; var reconnectEl = $('#reconnect'); @@ -104,17 +108,9 @@ app.isConnected = false; }); } - function onEventConnect() { - app.showLoginMessage(); - app.replaceSelfLinks(); - $(window).trigger('action:connected'); - app.isConnected = true; - } - - function onEventDisconnect() { + function onDisconnect() { $(window).trigger('action:disconnected'); app.isConnected = false; - socket.connect(); } function onEventBanned() { diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js index 686a9d2717..579f8462c3 100644 --- a/src/controllers/authentication.js +++ b/src/controllers/authentication.js @@ -30,7 +30,6 @@ authenticationController.register = function(req, res, next) { } } - var uid; async.waterfall([ function(next) { if (registrationType === 'invite-only') { @@ -255,7 +254,6 @@ authenticationController.localLogin = function(req, username, password, next) { authenticationController.logout = function(req, res, next) { if (req.user && parseInt(req.user.uid, 10) > 0 && req.sessionID) { var uid = parseInt(req.user.uid, 10); - require('../socket.io').logoutUser(req.user.uid); db.sessionStore.destroy(req.sessionID, function(err) { if (err) { return next(err); diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js index d0eb477301..e1c0489ea8 100644 --- a/src/socket.io/admin/user.js +++ b/src/socket.io/admin/user.js @@ -88,7 +88,6 @@ User.banUser = function(uid, callback) { websockets.in('uid_' + uid).emit('event:banned'); - websockets.logoutUser(uid); callback(); }); }); @@ -193,7 +192,6 @@ User.deleteUsers = function(socket, uids, callback) { ip: socket.ip }); - websockets.logoutUser(uid); next(); }); }); diff --git a/src/socket.io/index.js b/src/socket.io/index.js index a0f65f66cc..6594e201c4 100644 --- a/src/socket.io/index.js +++ b/src/socket.io/index.js @@ -71,14 +71,12 @@ function onConnect(socket) { return; } - socket.emit('event:connect'); if (userData.status !== 'offline') { socket.broadcast.emit('event:user_status_change', {uid: socket.uid, status: userData.status || 'online'}); } }); } else { rooms.enter(socket, 'online_guests'); - socket.emit('event:connect'); } } @@ -208,10 +206,6 @@ function callMethod(method, socket, params, callback) { }); } -Sockets.logoutUser = function(uid) { - io.in('uid_' + uid).emit('event:disconnect'); -}; - Sockets.in = function(room) { return io.in(room); };