From 7ef84e0daa46c8306ab2c08fb0fc0339ebc46bc3 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Sat, 1 Mar 2014 16:53:41 -0500 Subject: [PATCH] switched to 'ping active' system --- public/src/modules/composer.js | 6 ++++-- src/socket.io/modules.js | 31 +++++++++++++++++++++++-------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/public/src/modules/composer.js b/public/src/modules/composer.js index 0c4f3193ad..8b30a5aacf 100644 --- a/public/src/modules/composer.js +++ b/public/src/modules/composer.js @@ -6,8 +6,8 @@ define(['taskbar'], function(taskbar) { function initialise() { socket.on('event:composer.ping', function(post_uuid) { - if (composer.active !== post_uuid) { - socket.emit('modules.composer.pingInactive', post_uuid); + if (composer.active === post_uuid) { + socket.emit('modules.composer.pingActive', post_uuid); } }); }; @@ -832,6 +832,8 @@ define(['taskbar'], function(taskbar) { taskbar.discard('composer', post_uuid); $('body').css({'margin-bottom': 0}); $('.action-bar button').removeAttr('disabled'); + + socket.emit('modules.composer.unregister', post_uuid); } }; diff --git a/src/socket.io/modules.js b/src/socket.io/modules.js index 817cca5096..289a7fa12b 100644 --- a/src/socket.io/modules.js +++ b/src/socket.io/modules.js @@ -77,23 +77,38 @@ SocketModules.composer.renderHelp = function(socket, data, callback) { }; SocketModules.composer.register = function(socket, data) { + var now = Date.now(); server.in('topic_' + data.tid).emit('event:topic.replyStart', data.uid); data.socket = socket; + data.lastPing = now; + data.lastAnswer = now; data.timer = setInterval(function() { - // Ping the socket to see if the composer is still active - socket.emit('event:composer.ping', data.uuid); - }, 1000*10); // Every 10 seconds... + if (data.lastPing === data.lastAnswer) { + // Ping the socket to see if the composer is still active + data.lastPing = Date.now(); + socket.emit('event:composer.ping', data.uuid); + } else { + server.in('topic_' + data.tid).emit('event:topic.replyStop', data.uid); + delete SocketModules.composer.replyHash[data.uuid]; + } + }, 1000*5); // Every 5 seconds... SocketModules.composer.replyHash[data.uuid] = data; }; -SocketModules.composer.pingInactive = function(socket, uuid) { +SocketModules.composer.unregister = function(socket, uuid) { + var replyObj = SocketModules.composer.replyHash[uuid]; + if (uuid && replyObj) { + server.in('topic_' + replyObj.tid).emit('event:topic.replyStop', replyObj.uid); + delete SocketModules.composer.replyHash[replyObj.uuid]; + } +}; + +SocketModules.composer.pingActive = function(socket, uuid) { var data = SocketModules.composer.replyHash[uuid]; - if (SocketModules.composer.replyHash[uuid]) { - server.in('topic_' + data.tid).emit('event:topic.replyStop', data.uid); - clearInterval(data.timer); - delete SocketModules.composer.replyHash[uuid]; + if (data) { + data.lastAnswer = data.lastPing; } };