X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Fxynt-streaming.js;h=13eeb7b0027ad069e1d00b328aff103cd7a15017;hb=48f50311b96f41a3cd22f2832a225ccd1cd2131a;hp=1751ca0ef9a782f0740e181cec8ff8b79329f72a;hpb=6a189ed876a607797d381af0a5a9113bb0d7e0e5;p=brisk.git diff --git a/web/xynt-streaming.js b/web/xynt-streaming.js index 1751ca0..13eeb7b 100644 --- a/web/xynt-streaming.js +++ b/web/xynt-streaming.js @@ -5,6 +5,16 @@ // function transport_ws(doc, xynt_streaming, page) { + // if four arguments manage if WS or WSS connection + if (arguments.length > 3) + this.is_secure = arguments[3]; + else + this.is_secure = false; + + if (this.is_secure) + this.name = "WebSocketSecure"; + else + this.name = "WebSocket"; this.ctx_new = ""; var self = this; @@ -12,6 +22,7 @@ function transport_ws(doc, xynt_streaming, page) this.failed = false; this.xynt_streaming = xynt_streaming; try { + this.xynt_streaming.log("PAGE: "+page); this.ws = new WebSocket(page); this.ws.onopen = function () { self.xynt_streaming.log("onopen"); @@ -27,6 +38,9 @@ function transport_ws(doc, xynt_streaming, page) self.ctx_new += msg.data; }; this.ws.onclose = function (msg) { + this.onopen = null; + this.onclose = null; + this.onerror = null; self.xynt_streaming.log("onclose"+self.init_steps); if (self.init_steps == 0) self.ws_cb("error"); @@ -35,6 +49,9 @@ function transport_ws(doc, xynt_streaming, page) }; this.ws.onerror = function () { // on error + this.onopen = null; + this.onclose = null; + this.onerror = null; self.xynt_streaming.log("onerror"); self.ws_cb("error"); }; @@ -48,6 +65,7 @@ function transport_ws(doc, xynt_streaming, page) transport_ws.prototype = { doc: null, + name: null, xynt_streaming: "ready", ws: null, stopped: true, @@ -74,6 +92,7 @@ transport_ws.prototype = { if (from == "error") { if (this.xynt_streaming != "ready") { if (this.xynt_streaming.transp_fback > 0) { +this.xynt_streaming.log("DEC: "+this.xynt_streaming.transp_fback); this.xynt_streaming.transp_fback--; this.stopped = true; this.xynt_streaming.reload(); @@ -87,6 +106,7 @@ transport_ws.prototype = { ws_abort: function() { if (this.ws != null) { +this.xynt_streaming.log("WSCLOSE"); this.ws.close(); } }, @@ -152,6 +172,7 @@ transport_ws.prototype = { // function transport_xhr(doc, xynt_streaming, page) { + this.name = "XHR"; this.doc = doc; this.xynt_streaming = xynt_streaming; this.xhr = createXMLHttpRequest(); @@ -166,6 +187,7 @@ function transport_xhr(doc, xynt_streaming, page) transport_xhr.prototype = { doc: null, + name: null, xynt_streaming: "ready", xhr: null, stopped: true, @@ -281,6 +303,7 @@ transport_xhr.prototype = { // function transport_htmlfile(doc, xynt_streaming, page) { + this.name = "HTMLFile"; this.doc = doc; this.xynt_streaming = xynt_streaming; this.transfdoc = new ActiveXObject("htmlfile"); @@ -295,6 +318,7 @@ function transport_htmlfile(doc, xynt_streaming, page) transport_htmlfile.prototype = { doc: null, + name: null, xynt_streaming: null, stopped: true, ifra: null, @@ -384,6 +408,7 @@ transport_htmlfile.prototype = { // function transport_iframe(doc, xynt_streaming, page) { + this.name = "IFRAME"; this.doc = doc; this.xynt_streaming = xynt_streaming; this.ifra = doc.createElement("iframe"); @@ -395,6 +420,7 @@ function transport_iframe(doc, xynt_streaming, page) transport_iframe.prototype = { doc: null, + name: null, xynt_streaming: null, stopped: true, ifra: null, @@ -518,6 +544,8 @@ xynt_streaming.prototype = { win: null, transp_type: null, transp_port: 80, + transp_type_cur: null, + transp_port_cur: 80, transp_fback: 0, transp: null, console: null, @@ -605,24 +633,44 @@ xynt_streaming.prototype = { // page arrangement this.page = url_complete(this.win.location.href, this.page); + // DEFAULT TRANSPORT PROTOCOL HERE websocketsec, websocket if (this.transp_fback > 0) { - transp_type = "websocket"; - transp_port = (this.transp_fback == 2 ? 80 : 8080); + if (location.protocol == 'https:') { + transp_type = "websocketsec"; + transp_port = 443; + } + else { + transp_type = "websocket"; + transp_port = (this.transp_fback == 2 ? 80 : 8080); + } + } else { transp_type = this.transp_type; transp_port = this.transp_port; } - if (transp_type == "websocket") { - var end_proto, first_slash; + this.transp_type_cur = transp_type; + this.transp_port_cur = transp_port; + + if (transp_type == "websocket" || transp_type == "websocketsec") { + var end_proto, first_slash, newpage; // change protocol this.log("precha ["+this.page+"]"); - end_proto = this.page.indexOf("://"); - first_slash = this.page.substring(end_proto+3).indexOf("/"); + if (transp_type == "websocketsec") { + newpage = this.page.replace(/\.php$/g, "_wss.php").replace(/\.php\?/g, "_wss.php?"); + } + else { + newpage = this.page; + } + end_proto = newpage.indexOf("://"); + first_slash = newpage.substring(end_proto+3).indexOf("/"); - page = "ws://" + this.page.substring(end_proto+3, end_proto+3+first_slash) + ":" + transp_port + this.page.substring(end_proto+3 + first_slash); + page = (transp_type == "websocketsec" ? "wss://" : "ws://") + + newpage.substring(end_proto+3, end_proto+3 + first_slash) + ":" + + transp_port + newpage.substring(end_proto+3 + first_slash); + // this.log("MOP WS: " + page); } else { page = this.page; @@ -635,7 +683,11 @@ xynt_streaming.prototype = { try { // transport instantiation - if (transp_type == "websocket") { + if (transp_type == "websocketsec") { + page = url_append_args(page, "transp", "websocketsec"); + this.transp = new transport_ws(this.doc, this, page, true); + } + else if (transp_type == "websocket") { page = url_append_args(page, "transp", "websocket"); this.transp = new transport_ws(this.doc, this, page); } @@ -716,8 +768,7 @@ xynt_streaming.prototype = { var ctx_new_len; if (this.sandbox != null) { - // from old: var zug = "POLL sess = "+sess+" stat = "+stat+" subst = "+subst+" step = "+this.gst.st+" step_loc = "+this.gst.st_loc+" step_loc_new = "+this.gst.st_loc_new+" STOP: "+this.stopped; - var zug = "WATCHDOG sess = ["+this.sess+"] step = "+this.gst.st+" step_loc = "+this.gst.st_loc+" step_loc_new = "+this.gst.st_loc_new; + var zug = "WATCHDOG sess = ["+this.sess+"] step = "+this.gst.st+" step_loc = "+this.gst.st_loc+" step_loc_new = "+this.gst.st_loc_new+"Transport: "+this.transp.name; if (zug != this.sandbox.innerHTML) this.sandbox.innerHTML = zug; } @@ -860,7 +911,12 @@ xynt_streaming.prototype = { //xx this.hbit("+"); // alert("SINGLE: ["+singlecomm+"]"); + // window.console.log("["+singlecomm+"]"); this.cmdproc(singlecomm); + if (this.transp_type_cur) { + this.transp_type = this.transp_type_cur; + this.transp_port = this.transp_port_cur; + } again = 1; } } while (again);