diff --git a/src/datasource.ts b/src/datasource.ts index 2bc44e02..e188ed82 100644 --- a/src/datasource.ts +++ b/src/datasource.ts @@ -688,6 +688,20 @@ private buildKdbTimestampString(date : Date) { connectWS() { return new Promise((connected) => { + if (this.ws) { + if (this.ws.readyState == 1) { + connected(true); + return; + } + if (this.ws.readyState > 1) { + connected(false); + return; + } + this.ws.addEventListener('onopen', function () { connected(true); }); + this.ws.addEventListener('onclose', function () { connected(false); }); + return; + } + this.ws = new WebSocket(this.wsUrl); this.ws.binaryType = 'arraybuffer'; this.ws.onmessage = (response) => { @@ -848,7 +862,7 @@ private buildKdbTimestampString(date : Date) { connect(): Promise { return new Promise((resolve, reject) => { if ('WebSocket' in window) { - this.$q.when(this.setupWebSocket()).then( + this.$q.when().then( setTimeout(() => { resolve( this.checkConnectionState().then((result) => { @@ -920,19 +934,6 @@ private buildKdbTimestampString(date : Date) { }); } - setupWebSocket() { - this.ws = new WebSocket(this.wsUrl); - this.ws.binaryType = 'arraybuffer'; - - this.ws.onopen = () => {}; - - this.ws.onmessage = (messageEvent: MessageEvent) => {}; - - this.ws.onclose = () => {}; - - this.ws.onerror = () => {}; - } - buildResponse(status: string, message: string, title: string) { return Promise.resolve({ status,