* VRFS-594 - heartbeat checking plus hopefully more sophisticated reconnect logi

This commit is contained in:
Seth Call 2013-09-01 16:28:03 +00:00
parent a20f29bd1f
commit a251541a53
3 changed files with 32 additions and 19 deletions

View File

@ -17,7 +17,18 @@
server.clientID = "";
server.publicIP = "";
server.dispatchTable = {};
server.connected = false;
// handles logic if the websocket connection closes, and if it was in error then also prompt for reconnect
function closedCleanup(in_error) {
if(server.connected) {
server.connected = false;
if(in_error) {
context.JK.CurrentSessionModel.onWebsocketDisconnected();
}
}
}
server.registerMessageCallback = function(messageType, callback) {
if (server.dispatchTable[messageType] === undefined) {
server.dispatchTable[messageType] = [];
@ -57,10 +68,9 @@
server.socket.close();
if(in_error) {
context.JK.CurrentSessionModel.onWebsocketDisconnected();
}
closedCleanup(in_error);
}
server.rememberLogin = function() {
var token, loginMessage;
token = $.cookie("remember_token");
@ -99,13 +109,7 @@
server.onClose = function() {
logger.log("Socket to server closed.");
if (context.jamClient !== undefined)
{
context.jamClient.connected = false;
}
context.JK.CurrentSessionModel.onWebsocketDisconnected();
closedCleanup(true);
};
server.send = function(message) {
@ -147,6 +151,7 @@
logger.debug("Handling LOGIN_ACK. Updating client id to " + payload.client_id);
server.clientID = payload.client_id;
server.publicIP = payload.public_ip;
server.connected = true;
if (context.jamClient !== undefined)
{

View File

@ -146,10 +146,10 @@
/** check if the server is alive */
function serverHealthCheck(options) {
console.log("serverHealthCheck")
return $.ajax({
url: window.host,
cache: false,
dataType: "html"
type: "GET",
url: "/api/versioncheck"
});
}

View File

@ -42,6 +42,9 @@
refreshCurrentSession();
server.registerMessageCallback(context.JK.MessageType.MUSICIAN_SESSION_JOIN, refreshCurrentSession);
server.registerMessageCallback(context.JK.MessageType.MUSICIAN_SESSION_DEPART, refreshCurrentSession);
})
.fail(function() {
currentSessionId = null;
});
return deferred;
@ -77,7 +80,8 @@
currentSessionId = null;
}
else {
deferred = rest.serverHealthCheck();
deferred = new $.Deferred();
deferred.resolve();
}
return deferred;
@ -313,7 +317,7 @@
dataType: "json",
contentType: 'application/json',
url: url,
async: false,
async: true,
data: JSON.stringify(data),
processData:false
});
@ -324,13 +328,17 @@
return $.ajax({
type: "DELETE",
url: url,
async: false
async: true
});
}
function reconnect() {
window.location.reload();
context.JK.CurrentSessionModel.leaveCurrentSession()
.always(function() {
window.location.reload();
});
}
function registerReconnect(content) {
$('a.disconnected-reconnect', content).click(function() {
@ -340,12 +348,11 @@
html : template
});
context.JK.CurrentSessionModel.leaveCurrentSession()
rest.serverHealthCheck()
.done(function() {
reconnect();
})
.fail(function(xhr, textStatus, errorThrown) {
console.log("leaveCurrentSession failed: ", arguments);
if(xhr && xhr.status >= 100) {
// we could connect to the server, and it's alive
@ -362,6 +369,7 @@
}
});
return false;
});
}