From d241c94d460c5d6bccd319f61a26b779103c3be6 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Sun, 29 Mar 2020 18:32:05 +0200 Subject: [PATCH] Connect to websocket --- assets/js/common/ws.js | 48 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/assets/js/common/ws.js b/assets/js/common/ws.js index c0b706ea..0c85b424 100644 --- a/assets/js/common/ws.js +++ b/assets/js/common/ws.js @@ -9,16 +9,58 @@ class UserWebSocket { * Connect to server */ static async Connect() { - await this.Disconnect(); - console.log("Connect to websocket"); + try { + await this.Disconnect(); + + console.log("Connect to websocket"); + + // Generate an access token + const token = (await api("ws/token", null, true)).token; + + // Determine websocket URL + const url = ComunicWeb.__config.apiURL.replace("http", "ws") + "ws?key=" + token + + // Connect to websocket + this.ws = new WebSocket(url); + + // Wait for connection + this.ws.addEventListener("open", () => console.log("Connected to websocket!")) + this.ws.addEventListener("error", (e) => this.Error(e)) + this.ws.addEventListener("close", (e) => this.Error(e)); + + } catch(e) { + this.Error(e); + } + } + + /** + * Handles websocket errors + */ + static async Error(e) { + console.error(e) + notify("Could not connect to websocket ! Try to refresh the page...", "danger"); + } + + /** + * When we get disconnected from the websocket + */ + static async Disconnected(e) { + console.error(e) + alert("Disconnected from the server !"); } /** * Disconnect from server */ static async Disconnect() { - console.log("Disconnect from websockt"); + console.log("Disconnect from websocket"); + // Disconnect, if reuired + if(this.hasOwnProperty("ws")) { + if(this.ws.readyState == WebSocket.OPEN) + this.ws.close() + delete this.ws + } } } \ No newline at end of file