@ -1,20 +1,25 @@
/** Handle connections */
var Conn = ( function ( ) {
var Conn = ( function ( ) {
var ws ;
var heartbeatTout ;
var pingIv ;
var xoff = false ;
var autoXoffTout ;
var reconTout ;
var pageShown = false ;
function onOpen ( evt ) {
console . log ( "CONNECTED" ) ;
doSend ( "i" ) ;
}
function onClose ( evt ) {
console . warn ( "SOCKET CLOSED, code " + evt . code + ". Reconnecting..." ) ;
setTimeout ( function ( ) {
console . warn ( "SOCKET CLOSED, code " + evt . code + ". Reconnecting..." ) ;
clearTimeout ( reconTout ) ;
reconTout = setTimeout ( function ( ) {
init ( ) ;
} , 200 ) ;
} , 20 00 ) ;
// this happens when the buffer gets fucked up via invalid unicode.
// we basically use polling instead of socket then
}
@ -27,12 +32,18 @@ var Conn = (function() {
case 'T' :
case 'S' :
Screen . load ( evt . data ) ;
if ( ! pageShown ) {
showPage ( ) ;
pageShown = true ;
}
break ;
case '-' :
//console.log('xoff');
xoff = true ;
autoXoffTout = setTimeout ( function ( ) { xoff = false ; } , 250 ) ;
autoXoffTout = setTimeout ( function ( ) {
xoff = false ;
} , 250 ) ;
break ;
case '+' :
@ -42,7 +53,7 @@ var Conn = (function() {
break ;
}
heartbeat ( ) ;
} catch ( e ) {
} catch ( e ) {
console . error ( e ) ;
}
}
@ -81,24 +92,16 @@ var Conn = (function() {
showPage ( ) ;
return ;
}
heartbeat ( ) ;
ws = new WebSocket ( "ws://" + _root + "/term/update.ws" ) ;
clearTimeout ( reconTout ) ;
clearTimeout ( heartbeatTout ) ;
ws = new WebSocket ( "ws://" + _root + "/term/update.ws" ) ;
ws . onopen = onOpen ;
ws . onclose = onClose ;
ws . onmessage = onMessage ;
console . log ( "Opening socket." ) ;
// Ask for initial data
$ . get ( 'http://' + _root + '/term/init' , function ( resp , status ) {
if ( status !== 200 ) location . reload ( true ) ;
console . log ( "Data received!" ) ;
Screen . load ( resp ) ;
heartbeat ( ) ;
showPage ( ) ;
} ) ;
}
function heartbeat ( ) {
@ -108,9 +111,9 @@ var Conn = (function() {
function heartbeatFail ( ) {
console . error ( "Heartbeat lost, probing server..." ) ;
pingIv = setInterval ( function ( ) {
pingIv = setInterval ( function ( ) {
console . log ( "> ping" ) ;
$ . get ( 'http://' + _root + '/system/ping' , function ( resp , status ) {
$ . get ( 'http://' + _root + '/system/ping' , function ( resp , status ) {
if ( status == 200 ) {
clearInterval ( pingIv ) ;
console . info ( "Server ready, reloading page..." ) ;
@ -119,7 +122,7 @@ var Conn = (function() {
} , {
timeout : 100 ,
} ) ;
} , 5 00 ) ;
} , 10 00 ) ;
}
return {