diff --git a/web/app/assets/javascripts/JamServer.js b/web/app/assets/javascripts/JamServer.js index def88672f..33b5d054d 100644 --- a/web/app/assets/javascripts/JamServer.js +++ b/web/app/assets/javascripts/JamServer.js @@ -99,8 +99,8 @@ heartbeatAckCheckInterval = null; } - if (!server.reconnecting && !server.noReconnect) { - server.reconnecting = true; + if (!server.connecting && !server.noReconnect) { + server.connecting = true; var result = activeElementEvent('beforeDisconnect'); @@ -170,9 +170,7 @@ function loggedIn(header, payload) { - server.reconnecting = false; - - if (!connectTimeout) { + if (connectTimeout) { clearTimeout(connectTimeout); connectTimeout = null; } @@ -187,6 +185,12 @@ $.cookie('client_id', payload.client_id); } + // this has to be after context.jamclient.OnLoggedIn, because it hangs in scenarios + // where there is no device on startup for the current profile. + // So, in that case, it's possible that a reconnect loop will attempt, but we *do not want* + // it to go through unless we've passed through .OnLoggedIn + server.connecting = false; + heartbeatMS = payload.heartbeat_interval * 1000; connection_expire_time = payload.connection_expire_time * 1000; logger.info("jamkazam.js.loggedIn(): clientId=" + app.clientId + ", heartbeat=" + payload.heartbeat_interval + "s, expire_time=" + payload.connection_expire_time + 's'); @@ -469,12 +473,14 @@ logger.debug("connecting websocket: " + uri); + server.connecting = true; server.socket = new context.WebSocket(uri); server.socket.onopen = server.onOpen; server.socket.onmessage = server.onMessage; server.socket.onclose = server.onClose; connectTimeout = setTimeout(function () { + logger.debug("connection timeout fired") connectTimeout = null; if(connectDeferred.state() === 'pending') {