summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/realtime.js12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/realtime.js b/lib/realtime.js
index 9c3d5b2e..ae624c24 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);
});