lib/countly.js
function heartBeat(){
        
        //extend session if needed
        if(sessionStarted && autoExtend && trackTime){
            var last = getTimestamp();
            if(last - lastBeat > sessionUpdate){
                Countly.session_duration(last - lastBeat);
                lastBeat = last;
            }
        }
        
        //process event queue
        if(eventQueue.length > 0){
            if(eventQueue.length <= maxEventBatch){
                toRequestQueue({events: JSON.stringify(eventQueue)});
                eventQueue = [];
            }
            else{
                var events = eventQueue.splice(0, maxEventBatch);
                toRequestQueue({events: JSON.stringify(events)});
            }
            storeSet("cly_event", eventQueue);
        }
        
        //process request queue with event queue
        if(requestQueue.length > 0 && readyToProcess && getTimestamp() > failTimeout){
            readyToProcess = false;
            var params = requestQueue.shift();
            //check if any consent to sync
            if(Object.keys(syncConsents).length){
                if(consentTimer){
                    clearTimeout(consentTimer);
                    consentTimer = null;
                }
                params.consent = JSON.stringify(syncConsents);
                syncConsents = {};
            }
            log("Processing request", params);
            makeRequest(Countly.url, apiPath, params, function(err, params){
                log("Request Finished", params, err);
                if(err){
                    requestQueue.unshift(params);
                    failTimeout = getTimestamp() + failTimeoutAmount;
                }
                storeSet("cly_queue", requestQueue);
                readyToProcess = true;
            });
        }
        
        setTimeout(heartBeat, beatInterval);
    }
function heartBeat(){
        
        //extend session if needed
        if(sessionStarted && autoExtend && trackTime){
            var last = getTimestamp();
            if(last - lastBeat > sessionUpdate){
                Countly.session_duration(last - lastBeat);
                lastBeat = last;
            }
        }
        
        //process event queue
        if(eventQueue.length > 0){
            if(eventQueue.length <= maxEventBatch){
                toRequestQueue({events: JSON.stringify(eventQueue)});
                eventQueue = [];
            }
            else{
                var events = eventQueue.splice(0, maxEventBatch);
                toRequestQueue({events: JSON.stringify(events)});
            }
            storeSet("cly_event", eventQueue);
        }
        
        //process request queue with event queue
        if(requestQueue.length > 0 && readyToProcess && getTimestamp() > failTimeout){
            readyToProcess = false;
            var params = requestQueue.shift();
            //check if any consent to sync
            if(Object.keys(syncConsents).length){
                if(consentTimer){
                    clearTimeout(consentTimer);
                    consentTimer = null;
                }
                params.consent = JSON.stringify(syncConsents);
                syncConsents = {};
            }
            log("Processing request", params);
            makeRequest(Countly.url, apiPath, params, function(err, params){
                log("Request Finished", params, err);
                if(err){
                    requestQueue.unshift(params);
                    failTimeout = getTimestamp() + failTimeoutAmount;
                }
                storeSet("cly_queue", requestQueue);
                readyToProcess = true;
            });
        }
        
        setTimeout(heartBeat, beatInterval);
    }
function heartBeat ( ) { //extend session if needed if ( sessionStarted && autoExtend && trackTime ) { var last = getTimestamp ( ) ; if ( last - lastBeat > sessionUpdate ) { Countly . session_duration ( last - lastBeat ) ; lastBeat = last ; } } //process event queue if ( eventQueue . length > 0 ) { if ( eventQueue . length <= maxEventBatch ) { toRequestQueue ( { events : JSON . stringify ( eventQueue ) } ) ; eventQueue = [ ] ; } else { var events = eventQueue . splice ( 0 , maxEventBatch ) ; toRequestQueue ( { events : JSON . stringify ( events ) } ) ; } storeSet ( "cly_event" , eventQueue ) ; } //process request queue with event queue if ( requestQueue . length > 0 && readyToProcess && getTimestamp ( ) > failTimeout ) { readyToProcess = false ; var params = requestQueue . shift ( ) ; //check if any consent to sync if ( Object . keys ( syncConsents ) . length ) { if ( consentTimer ) { clearTimeout ( consentTimer ) ; consentTimer = null ; } params . consent = JSON . stringify ( syncConsents ) ; syncConsents = { } ; } log ( "Processing request" , params ) ; makeRequest ( Countly . url , apiPath , params , function ( err , params ) { log ( "Request Finished" , params , err ) ; if ( err ) { requestQueue . unshift ( params ) ; failTimeout = getTimestamp ( ) + failTimeoutAmount ; } storeSet ( "cly_queue" , requestQueue ) ; readyToProcess = true ; } ) ; } setTimeout ( heartBeat , beatInterval ) ; }
heart beat
heart beat