lqml/examples/clog-demo/clog-assets/htm/js/boot.js

130 lines
3.2 KiB
JavaScript

var _ws;
var adr;
var clog = {};
var pingerid;
var ios = false;
if (typeof clog_debug == 'undefined') {
clog_debug = false;
}
const ws = {
// replace 'ws.send()'
send: function(message) {
if (ios) {
_ws.send(message);
} else {
// hack, see QML 'onTitleChanged()'
document.title = message;
document.title = "-"; // non empty
}
}
};
function Ping_ws() {
if (_ws.readyState == 1) {
_ws.send ('0');
}
}
function Shutdown_ws(event) {
if (_ws != null) {
_ws.onerror = null;
_ws.onclose = null;
_ws.close ();
_ws = null;
}
clearInterval (pingerid);
if (clog['html_on_close'] != '') {
$(document.body).html(clog['html_on_close']);
}
}
function Setup_ws() {
_ws.onmessage = function (event) {
try {
if (clog_debug == true) {
console.log ('eval data = ' + event.data);
}
eval (event.data);
} catch (e) {
console.error (e.message);
}
}
_ws.onerror = function (event) {
console.log ('onerror: reconnect');
_ws = null;
_ws = new WebSocket (adr + '?r=' + clog['connection_id']);
_ws.onopen = function (event) {
console.log ('onerror: reconnect successful');
Setup_ws();
}
_ws.onclose = function (event) {
console.log ('onerror: reconnect failure');
Shutdown_ws(event);
}
}
_ws.onclose = function (event) {
console.log ('onclose: reconnect');
_ws = null;
_ws = new WebSocket (adr + '?r=' + clog['connection_id']);
_ws.onopen = function (event) {
console.log ('onclose: reconnect successful');
Setup_ws();
}
_ws.onclose = function (event) {
console.log ('onclose: reconnect failure');
Shutdown_ws(event);
}
}
}
$( document ).ready(function() {
var s = document.location.search;
var tokens;
var r = /[?&]?([^=]+)=([^&]*)/g;
clog['body']=document.body;
clog['head']=document.head;
clog['documentElement']=document.documentElement;
clog['window']=window;
clog['navigator']=navigator;
clog['document']=window.document;
clog['location']=window.location;
/*
if (location.protocol == 'https:') {
adr = 'wss://' + location.hostname;
} else {
adr = 'ws://' + location.hostname;
}
if (location.port != '') { adr = adr + ':' + location.port; }
adr = adr + '/clog';
*/
if (ios) {
adr = 'ws://127.0.0.1:8080';
try {
console.log ('connecting to ' + adr);
_ws = new WebSocket (adr);
} catch (e) {
console.log ('trying again, connecting to ' + adr);
_ws = new WebSocket (adr);
}
if (_ws != null) {
_ws.onopen = function (event) {
console.log ('connection successful');
Setup_ws();
}
pingerid = setInterval (function () {Ping_ws ();}, 10000);
} else {
document.writeln ('If you are seeing this your browser or your connection to the internet is blocking web_wss.');
}
}
});