diff --git a/app/assets/javascripts/AAB_message_factory.js b/app/assets/javascripts/AAB_message_factory.js index b3aaaeefe..73404ecd5 100644 --- a/app/assets/javascripts/AAB_message_factory.js +++ b/app/assets/javascripts/AAB_message_factory.js @@ -51,6 +51,12 @@ var data = {}; return client_container(msg.PING_REQUEST, route_to_client(client_id), data); }; + // + // Heartbeat message + factory.heartbeat = function() { + var data = {}; + return client_container(msg.HEARTBEAT, route_to.SERVER, data); + }; // create a login message using user/pass factory.login_with_user_pass = function(username, password) { diff --git a/app/assets/javascripts/jamkazam.js b/app/assets/javascripts/jamkazam.js index 65bf97110..7b79305d6 100644 --- a/app/assets/javascripts/jamkazam.js +++ b/app/assets/javascripts/jamkazam.js @@ -6,6 +6,7 @@ var JamKazam = context.JK.JamKazam = function() { var app; var logger = context.JK.logger; + var heartbeatInterval = null; var subscribers = {}; // Keys are MessageType.MESSAGE values Values are lists of functions to call /** @@ -64,6 +65,18 @@ } } + function _handleLoginAck(header, payload) { + var heartbeatMS = payload.heartbeat_interval * 1000; + logger.debug("Login ACK. Setting up heartbeat every " + heartbeatMS + " MS"); + heartbeatInterval = context.setInterval(_heartbeat, heartbeatMS); + } + + function _heartbeat() { + logger.debug("...sending heartbeat"); + message = context.JK.MessageFactory.heartbeat(); + context.JK.JamServer.send(message); + } + /** * Register for all known types, logging events as they happen, and * notifying subscribers (see this.subscribe) as they occur. @@ -73,6 +86,8 @@ logger.debug("registering " + message); context.JK.JamServer.registerMessageCallback(message, handleMessage); } + // Specifically register a handler for LOGIN_ACK to setup the heartbeat calls. + context.JK.JamServer.registerMessageCallback(context.JK.MessageType.LOGIN_ACK, _handleLoginAck); } /** diff --git a/app/assets/javascripts/messaging.js b/app/assets/javascripts/messaging.js index 6b4bb47fb..9bfcc3562 100644 --- a/app/assets/javascripts/messaging.js +++ b/app/assets/javascripts/messaging.js @@ -53,7 +53,7 @@ * Register a simple console logger for all known message types. */ this.register = function() { - registerLoginPinger(); + //registerLoginPinger(); }; };