X-Git-Url: https://mop.ddnsfree.com/gitweb/?p=xynt.git;a=blobdiff_plain;f=web%2Fxynt%2Fxynt-http-streaming.js;h=f6b0a0bd46ee1c9247ea4d406e440b9d24f77049;hp=5a0c6158ce5fcf76ac7682b2b326056a2e501272;hb=1716e67da8e78da7de463d5224baeaaaca1cf2ff;hpb=5ba9cf2d51aeb6ca0d9687c908ccb10496e843ca diff --git a/web/xynt/xynt-http-streaming.js b/web/xynt/xynt-http-streaming.js index 5a0c615..f6b0a0b 100644 --- a/web/xynt/xynt-http-streaming.js +++ b/web/xynt/xynt-http-streaming.js @@ -60,7 +60,6 @@ http_streaming.prototype = { cmdproc: null, comm_match: /_*@BEGIN@(.*?)@END@/g, comm_clean: /_*@BEGIN@(.*?)@END@/, - ctx_old: "", ctx_old_len: 0, // ctx_new: "", ctx_new_len: 0, @@ -73,7 +72,7 @@ http_streaming.prototype = { this.ifra.style.visibility = "hidden"; this.doc.body.appendChild(this.ifra); if (page != null) - this.page = page; + this.page = url_complete(this.win.location.href, page); this.page = url_append_args(this.page, "sess", this.sess, "st", this.gst.st); this.log(this.page); @@ -86,10 +85,11 @@ http_streaming.prototype = { watchdog: function () { var i, again; var comm_newpart, comm_len, comm_arr; + var ctx_new_len; // WATCHDOGING THE CONNECTION + this.log("hs::watchdog: start, cur equal times: "+this.keepalives_equal); if ( (this.watchdog_ct % this.watchdog_checktm) == 0 || !this.watchable) { - this.log("hs::watchdog: start, cur equal times: "+this.keepalives_equal); if (!this.watchable) { do { if (typeof(this.ifra.contentWindow.http_streaming) == 'undefined') @@ -127,21 +127,30 @@ http_streaming.prototype = { again = 0; if (typeof(this.ifra.contentWindow.ctx_new) == 'undefined') break; - if (this.ifra.contentWindow.ctx_new.length == this.ctx_old_len) { - // this.ctx_new = this.ctx_old = ""; - // FIXME find a more robust clean method + + ctx_new_length = this.ifra.contentWindow.ctx_new.length; + if (ctx_new_length == this.ctx_old_len) { break; } - this.log("new: "+ this.ifra.contentWindow.ctx_new.length + " old: "+this.ctx_old_len); + this.log("new: "+ ctx_new_length + " old: "+this.ctx_old_len); this.keepalive_new++; - for (i = this.ctx_old_len ; i < this.ifra.contentWindow.ctx_new.length ; i++) { - if (this.ifra.contentWindow.ctx_new[i] != '_') + for (i = this.ctx_old_len ; i < ctx_new_length ; i++) { + if (this.ifra.contentWindow.ctx_new.charAt(i) != '_') { + this.log("ctx_new.char(i) != '_' ["+this.ifra.contentWindow.ctx_new.charAt(i)+"]"); break; + } + else { + this.log("ctx_new.charAt(i) == '_'"); + } } - if (i == this.ifra.contentWindow.ctx_new.length) { - this.ctx_old_len = i; + this.ctx_old_len = i; + if (i == ctx_new_length) { + this.log("old_len == i"); break; } + else { + this.log("old_len != i: "+i); + } comm_newpart = this.ifra.contentWindow.ctx_new.substr(this.ctx_old_len); comm_len = 0; comm_arr = comm_newpart.match(this.comm_match); @@ -154,10 +163,9 @@ http_streaming.prototype = { // XX alert("COMM_ARR["+i+"]: "+comm_arr[i]+" LEN:"+comm_arr[i].length); comm_len += comm_arr[i].length; } - this.ctx_old += comm_newpart.substr(0,comm_len); again = 1; } - this.ctx_old_len = this.ctx_old.length; + this.ctx_old_len += comm_len; } while (again); @@ -218,7 +226,6 @@ http_streaming.prototype = { delete this.ifra; this.ifra = null; } - this.ctx_old = ""; this.ctx_old_len = 0; },