Update to prevent duplicate socket push in queue in order to lower down server loading

This commit is contained in:
Wu Cheng-Han 2016-10-10 20:25:48 +08:00
parent d23ced1fba
commit 1cae0c5b7f

View file

@ -327,6 +327,15 @@ function emitRefresh(socket) {
socket.emit('refresh', out); 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) { function clearSocketQueue(queue, socket) {
for (var i = 0; i < queue.length; i++) { for (var i = 0; i < queue.length; i++) {
if (!queue[i] || queue[i].id == socket.id) { if (!queue[i] || queue[i].id == socket.id) {
@ -654,6 +663,8 @@ function connection(socket) {
if (!noteId) { if (!noteId) {
return failConnection(404, 'note id not found', socket); return failConnection(404, 'note id not found', socket);
} }
if (isDuplicatedInSocketQueue(socket, connectionSocketQueue)) return;
// store noteId in this socket session // store noteId in this socket session
socket.noteId = noteId; socket.noteId = noteId;
@ -830,6 +841,7 @@ function connection(socket) {
//when a new client disconnect //when a new client disconnect
socket.on('disconnect', function () { socket.on('disconnect', function () {
if (isDuplicatedInSocketQueue(socket, disconnectSocketQueue)) return;
disconnectSocketQueue.push(socket); disconnectSocketQueue.push(socket);
disconnect(socket); disconnect(socket);
}); });