diff --git a/server/server.js b/server/server.js index 749acc1c..2936cbb6 100755 --- a/server/server.js +++ b/server/server.js @@ -493,11 +493,13 @@ io.on('connection', function(socket){ if(contains(lists[coll], guid)) { var index = lists[coll].indexOf(guid); - lists[coll].splice(index, 1); - io.to(coll).emit("viewers", lists[coll].length); - io.to(coll).emit('chat', [name, " left"]); - socket.leave(coll); - + if(index != -1) + { + lists[coll].splice(index, 1); + io.to(coll).emit("viewers", lists[coll].length); + io.to(coll).emit('chat', [name, " left"]); + socket.leave(coll); + } } } @@ -505,77 +507,17 @@ io.on('connection', function(socket){ socket.on('disconnect', function() { - if(in_list) - { - if(contains(lists[coll], guid)) - { - var index = lists[coll].indexOf(guid); - if(index != -1) - { - lists[coll].splice(index, 1); - io.to(coll).emit("viewers", lists[coll].length); - io.to(coll).emit('chat', [name, " left"]); - } - } - - if(contains(unique_ids, short_id)) - { - var index = unique_ids.indexOf(guid); - if(index != -1) - lists[coll].splice(index, 1); - } - - } + left_channel(in_list, coll, guid, name, short_id); }); socket.on('reconnect_failed', function() { - if(in_list) - { - if(contains(lists[coll], guid)) - { - var index = lists[coll].indexOf(guid); - if(index != -1) - { - lists[coll].splice(index, 1); - io.to(coll).emit("viewers", lists[coll].length); - io.to(coll).emit('chat', [name, " left"]); - } - } - - if(contains(unique_ids, short_id)) - { - var index = unique_ids.indexOf(guid); - if(index != -1) - lists[coll].splice(index, 1); - } - - } + left_channel(in_list, coll, guid, name, short_id); }); socket.on('connect_timeout', function() { - if(in_list) - { - if(contains(lists[coll], guid)) - { - var index = lists[coll].indexOf(guid); - if(index != -1) - { - lists[coll].splice(index, 1); - io.to(coll).emit("viewers", lists[coll].length); - io.to(coll).emit('chat', [name, " left"]); - } - } - - if(contains(unique_ids, short_id)) - { - var index = unique_ids.indexOf(guid); - if(index != -1) - lists[coll].splice(index, 1); - } - - } + left_channel(in_list, coll, guid, name, short_id); }); socket.on('pos', function() @@ -585,6 +527,31 @@ io.on('connection', function(socket){ }); }); +function left_channel(in_list, coll, guid, name, short_id) +{ + if(in_list) + { + if(contains(lists[coll], guid)) + { + var index = lists[coll].indexOf(guid); + if(index != -1) + { + lists[coll].splice(index, 1); + io.to(coll).emit("viewers", lists[coll].length); + io.to(coll).emit('chat', [name, " left"]); + } + } + + if(contains(unique_ids, short_id)) + { + var index = unique_ids.indexOf(guid); + if(index != -1) + lists[coll].splice(index, 1); + } + + } +} + function del(params, socket) { var coll = params[0].toLowerCase();