From 1cae0c5b7f63bd9049fbfbc891f77d1b2af3ec99 Mon Sep 17 00:00:00 2001 From: Wu Cheng-Han Date: Mon, 10 Oct 2016 20:25:48 +0800 Subject: [PATCH] Update to prevent duplicate socket push in queue in order to lower down server loading --- lib/realtime.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/realtime.js b/lib/realtime.js index 9c3d5b2..ae624c2 100644 --- a/lib/realtime.js +++ b/lib/realtime.js @@ -327,6 +327,15 @@ function emitRefresh(socket) { socket.emit('refresh', out); } +function isDuplicatedInSocketQueue(queue, socket) { + for (var i = 0; i < queue.length; i++) { + if (queue[i] && queue[i].id == socket.id) { + return true; + } + } + return false; +} + function clearSocketQueue(queue, socket) { for (var i = 0; i < queue.length; i++) { if (!queue[i] || queue[i].id == socket.id) { @@ -654,6 +663,8 @@ function connection(socket) { if (!noteId) { return failConnection(404, 'note id not found', socket); } + + if (isDuplicatedInSocketQueue(socket, connectionSocketQueue)) return; // store noteId in this socket session socket.noteId = noteId; @@ -830,6 +841,7 @@ function connection(socket) { //when a new client disconnect socket.on('disconnect', function () { + if (isDuplicatedInSocketQueue(socket, disconnectSocketQueue)) return; disconnectSocketQueue.push(socket); disconnect(socket); });