From d146bff2a16474f6c0a6c231b5da4ee3c0c1365c Mon Sep 17 00:00:00 2001 From: barisusakli Date: Tue, 20 Oct 2015 17:53:44 -0400 Subject: [PATCH] send less data when leaving rooms --- public/src/ajaxify.js | 2 +- public/src/app.js | 15 +++++++++++++-- src/socket.io/meta.js | 34 ++++++++++++++++++++-------------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 8716a4dc52..711d72d81f 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -46,7 +46,7 @@ $(document).ready(function() { return true; } - app.enterRoom(''); + app.leaveCurrentRoom(); $(window).off('scroll'); diff --git a/public/src/app.js b/public/src/app.js index f77c860b02..c3727f6c77 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -143,14 +143,25 @@ app.cacheBuster = null; status: app.user.status }, function(err) { if (err) { - app.alertError(err.message); - return; + return app.alertError(err.message); } app.currentRoom = room; }); } }; + app.leaveCurrentRoom = function() { + if (!socket) { + return; + } + socket.emit('meta.rooms.leaveCurrent', function(err) { + if (err) { + return app.alertError(err.message); + } + app.currentRoom = ''; + }); + } + function highlightNavigationLink() { var path = window.location.pathname; $('#main-nav li').removeClass('active'); diff --git a/src/socket.io/meta.js b/src/socket.io/meta.js index 7134af36c7..c304833ef5 100644 --- a/src/socket.io/meta.js +++ b/src/socket.io/meta.js @@ -1,16 +1,10 @@ 'use strict'; -var nconf = require('nconf'), - gravatar = require('gravatar'), - winston = require('winston'), - validator = require('validator'), +var validator = require('validator'), - db = require('../database'), meta = require('../meta'), user = require('../user'), topics = require('../topics'), - logger = require('../logger'), - plugins = require('../plugins'), emitter = require('../emitter'), rooms = require('./rooms'), @@ -53,13 +47,7 @@ SocketMeta.rooms.enter = function(socket, data, callback) { return callback(new Error('[[error:not-allowed]]')); } - if (socket.currentRoom) { - rooms.leave(socket, socket.currentRoom); - if (socket.currentRoom.indexOf('topic') !== -1) { - websockets.in(socket.currentRoom).emit('event:user_leave', socket.uid); - } - socket.currentRoom = ''; - } + leaveCurrentRoom(socket); if (data.enter) { rooms.enter(socket, data.enter); @@ -76,6 +64,24 @@ SocketMeta.rooms.enter = function(socket, data, callback) { callback(); }; +SocketMeta.rooms.leaveCurrent = function(socket, data, callback) { + if (!socket.uid || !socket.currentRoom) { + return callback(); + } + leaveCurrentRoom(socket); + callback(); +}; + +function leaveCurrentRoom(socket) { + if (socket.currentRoom) { + rooms.leave(socket, socket.currentRoom); + if (socket.currentRoom.indexOf('topic') !== -1) { + websockets.in(socket.currentRoom).emit('event:user_leave', socket.uid); + } + socket.currentRoom = ''; + } +} + SocketMeta.rooms.getAll = function(socket, data, callback) { var roomClients = rooms.roomClients(); var socketData = {