Fixed user might not disconnect from server properly, handle more uncaught exceptions
This commit is contained in:
parent
43a175e710
commit
f1a0dff9e6
2 changed files with 16 additions and 6 deletions
|
@ -51,7 +51,7 @@ EditorSocketIOServer.prototype.addClient = function (socket) {
|
||||||
try {
|
try {
|
||||||
self.onOperation(socket, revision, operation, selection);
|
self.onOperation(socket, revision, operation, selection);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
socket.disconnect();
|
socket.disconnect(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -171,9 +171,12 @@ function getStatus(callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function getNotenameFromSocket(socket) {
|
function getNotenameFromSocket(socket) {
|
||||||
|
if (!socket || !socket.handshake || !socket.handshake.headers) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
var referer = socket.handshake.headers.referer;
|
var referer = socket.handshake.headers.referer;
|
||||||
if (!referer) {
|
if (!referer) {
|
||||||
return socket.disconnect();
|
return socket.disconnect(true);
|
||||||
}
|
}
|
||||||
var hostUrl = url.parse(referer);
|
var hostUrl = url.parse(referer);
|
||||||
var notename = hostUrl.pathname.split('/')[1];
|
var notename = hostUrl.pathname.split('/')[1];
|
||||||
|
@ -184,7 +187,7 @@ function getNotenameFromSocket(socket) {
|
||||||
socket.emit('info', {
|
socket.emit('info', {
|
||||||
code: 404
|
code: 404
|
||||||
});
|
});
|
||||||
return socket.disconnect();
|
return socket.disconnect(true);
|
||||||
}
|
}
|
||||||
notename = LZString.decompressFromBase64(notename);
|
notename = LZString.decompressFromBase64(notename);
|
||||||
return notename;
|
return notename;
|
||||||
|
@ -281,7 +284,10 @@ function startConnection(socket) {
|
||||||
isConnectionBusy = true;
|
isConnectionBusy = true;
|
||||||
|
|
||||||
var notename = getNotenameFromSocket(socket);
|
var notename = getNotenameFromSocket(socket);
|
||||||
if (!notename) return;
|
if (!notename) {
|
||||||
|
isConnectionBusy = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!notes[notename]) {
|
if (!notes[notename]) {
|
||||||
db.readFromDB(notename, function (err, data) {
|
db.readFromDB(notename, function (err, data) {
|
||||||
|
@ -289,7 +295,7 @@ function startConnection(socket) {
|
||||||
socket.emit('info', {
|
socket.emit('info', {
|
||||||
code: 404
|
code: 404
|
||||||
});
|
});
|
||||||
socket.disconnect();
|
socket.disconnect(true);
|
||||||
//clear err socket in queue
|
//clear err socket in queue
|
||||||
for (var i = 0; i < connectionSocketQueue.length; i++) {
|
for (var i = 0; i < connectionSocketQueue.length; i++) {
|
||||||
if (connectionSocketQueue[i].id == socket.id)
|
if (connectionSocketQueue[i].id == socket.id)
|
||||||
|
@ -306,6 +312,7 @@ function startConnection(socket) {
|
||||||
Note.findOrNewNote(notename, permission, function (err, note) {
|
Note.findOrNewNote(notename, permission, function (err, note) {
|
||||||
if (err) {
|
if (err) {
|
||||||
responseError(res, "404", "Not Found", "oops.");
|
responseError(res, "404", "Not Found", "oops.");
|
||||||
|
isConnectionBusy = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var body = LZString.decompressFromBase64(data.rows[0].content);
|
var body = LZString.decompressFromBase64(data.rows[0].content);
|
||||||
|
@ -338,7 +345,10 @@ function disconnect(socket) {
|
||||||
logger.info(JSON.stringify(users[socket.id]));
|
logger.info(JSON.stringify(users[socket.id]));
|
||||||
}
|
}
|
||||||
var notename = getNotenameFromSocket(socket);
|
var notename = getNotenameFromSocket(socket);
|
||||||
if (!notename) return;
|
if (!notename) {
|
||||||
|
isDisconnectBusy = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (users[socket.id]) {
|
if (users[socket.id]) {
|
||||||
delete users[socket.id];
|
delete users[socket.id];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue