@@ -3526,7 +3526,7 @@ function refresh() {
35263526 $ ( "#stText" ) . text ( "" ) ;
35273527 } ,
35283528 error : function ( ) {
3529- $ ( "#stText" ) . text ( "error |" ) ;
3529+ $ ( "#stText" ) . text ( "poll error |" ) ;
35303530 document . getElementById ( "timeperiod" ) . disabled = false ;
35313531 ajax_inprogress = false ;
35323532 } ,
@@ -3535,6 +3535,7 @@ function refresh() {
35353535 document . getElementById ( "timeperiod" ) . disabled = false ;
35363536 }
35373537 clientActive = true ;
3538+ console . log ( "WebSockets - Resuming Websockets updates." )
35383539 clearTimeout ( periodical ) ;
35393540 ajax_inprogress = false ;
35403541 }
@@ -3628,29 +3629,38 @@ function liveData() {
36283629
36293630 } else {
36303631 var frame = JSON . parse ( message . payloadString . toString ( ) ) ;
3632+
36313633 if ( wvar . query == "" || sondePrefix . indexOf ( wvar . query ) > - 1 || wvar . query == frame . serial ) {
36323634 if ( frame . length == null ) {
36333635 var tempDate = new Date ( frame . datetime ) . getTime ( ) ;
36343636 } else {
36353637 var tempDate = new Date ( frame [ frame . length - 1 ] . datetime ) . getTime ( )
36363638 }
3637- if ( ( dateNow - tempDate ) < 45000 ) {
3639+ if ( ( dateNow - tempDate ) < 30000 ) {
3640+ // Data is recent enough.
36383641 var test = formatData ( frame , true ) ;
36393642 if ( clientActive ) {
36403643 live_data_buffer . positions . position . push . apply ( live_data_buffer . positions . position , test . positions . position )
36413644 }
36423645 $ ( "#stTimer" ) . attr ( "data-timestamp" , dateNow ) ;
36433646 $ ( "#stText" ) . text ( "websocket (" + ( ( dateNow - tempDate ) / 1000 ) . toFixed ( 1 ) + " s) |" ) ;
36443647 } else if ( ( dateNow - new Date ( frame . datetime ) . getTime ( ) ) > 150000 ) {
3648+ // Data is very old, which may indicate that our tab has probably been suspended.
3649+ // We now poll for data.
36453650 $ ( "#stText" ) . text ( "data error (" + ( ( dateNow - tempDate ) / 1000 ) . toFixed ( 1 ) + " s) |" ) ;
3646- console . log ( "WebSockets Error: Data Age was " + ( ( dateNow - tempDate ) / 1000 ) . toFixed ( 1 ) + " s, frame length: " + frame . length ) ;
3647- //refresh();
3651+ console . log ( "WebSockets - Data Age was " + ( ( dateNow - tempDate ) / 1000 ) . toFixed ( 1 ) + " s, frame length: " + frame . length + ". Discarding and polling for data." ) ;
3652+ // Discard all further messages until we have finished the next poll.
3653+ console . log ( "WebSockets - Tab possibly suspended, polling for updates." )
3654+ clientActive = false ;
3655+ refresh ( ) ;
36483656 } else {
36493657 $ ( "#stText" ) . text ( "data error (" + ( ( dateNow - tempDate ) / 1000 ) . toFixed ( 1 ) + " s) |" ) ;
3650- console . log ( "WebSockets Error: Data Age was " + ( ( dateNow - tempDate ) / 1000 ) . toFixed ( 1 ) + " s, frame length: " + frame . length ) ;
3658+ console . log ( "WebSockets - Data Age was " + ( ( dateNow - tempDate ) / 1000 ) . toFixed ( 1 ) + " s, frame length: " + frame . length + ". Discarding frame." ) ;
36513659 }
36523660 }
36533661 }
3662+ } else {
3663+ console . log ( "WebSockets - Discarding Message." )
36543664 }
36553665 }
36563666 catch ( err ) { }
0 commit comments