this.xynt_streaming.log("PAGE: "+page);
this.ws = new WebSocket(page);
this.ws.onopen = function () {
+ console.log('WS On open');
+
self.xynt_streaming.log("onopen");
if (this.readyState == 1) {
// connected
}
};
this.ws.onmessage = function (msg) {
+ console.log('WS On message');
self.xynt_streaming.log("onmessage");
// new data in msg.data
self.ctx_new += msg.data;
};
this.ws.onclose = function (msg) {
- this.onopen = null;
- this.onclose = null;
- this.onerror = null;
+ console.log('WS On close');
+ self.onopen = null;
+ self.onclose = null;
+ self.onerror = null;
self.xynt_streaming.log("onclose"+self.init_steps);
if (self.init_steps == 0)
self.ws_cb("error");
}
}
}
+ else if (from == "open") {
+ this.flush_out_queue();
+ }
+
if (this.ws != null && this.ws.readyState > 1) {
this.stopped = true;
}
},
+ flush_out_queue: function() {
+ var l_out = this.xynt_streaming.out_queue.length;
+
+ if (l_out == 0)
+ return;
+
+ console.log('flush_out_queue: ' + l_out);
+ for (var i = 0 ; i < l_out ; i++) {
+ if (this.ws.readyState != 1) {
+ break;
+ }
+ var item = this.xynt_streaming.out_queue.shift();
+ var sent = true;
+ try {
+ this.ws.send(item);
+ }
+ catch (ex) {
+ this.xynt_streaming.out_queue.unshift(item);
+ break;
+ }
+ }
+ },
+
+ send: function(msg) {
+ console.log('new send');
+ if (this.ws && this.ws.readyState == 1) {
+ try {
+ console.log('Try send ... ');
+ this.flush_out_queue();
+ this.ws.send(msg);
+ console.log(' ... done');
+ }
+ catch (ex) {
+ console.log(' ... catched exception');
+ this.xynt_streaming.out_queue.push(msg);
+ }
+ }
+ else {
+ console.log('ws not ready: push into out_queue');
+ this.xynt_streaming.out_queue.push(msg);
+ }
+ },
+
ws_abort: function() {
if (this.ws != null) {
this.xynt_streaming.log("WSCLOSE");
this.doc = win.document;
this.keepalive_old = -1;
this.keepalive_new = -1;
+ this.out_queue = [];
this.mon_errtime = this.keepalives_eq_max * this.watchdog_checktm * this.watchdog_timeout;
this.mon_wrntime = this.mon_errtime / 2;
comm_match: /_*@BEGIN@(.*?)@END@/g,
comm_clean: /_*@BEGIN@(.*?)@END@/,
stream: "",
+ out_queue: null,
the_end: false,
mon_time: -1,
return;
},
+ send: function(msg) {
+ if (typeof(this.transp.send) == 'undefined') {
+ this.log('send not implemented for ' + this.transp_type);
+ return;
+ }
+
+ return this.transp.send(msg);
+ },
+
//
// moved to xynt-streaming-ifra as push()
//