From a4c6e6611c966e095211de4bba422c9a0858bf3c Mon Sep 17 00:00:00 2001 From: Alex Ling Date: Tue, 12 Jan 2021 10:12:02 +0000 Subject: [PATCH] Try WSS first, and fallback to WS (#144) --- public/js/download-manager.js | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/public/js/download-manager.js b/public/js/download-manager.js index 4b0e221..0393dd3 100644 --- a/public/js/download-manager.js +++ b/public/js/download-manager.js @@ -4,21 +4,30 @@ const component = () => { paused: undefined, loading: false, toggling: false, + ws: undefined, - init() { - const ws = new WebSocket(`ws://${location.host}${base_url}api/admin/mangadex/queue`); - ws.onmessage = event => { + wsConnect(secure = true) { + const url = `${secure ? 'wss' : 'ws'}://${location.host}${base_url}api/admin/mangadex/queue`; + console.log(`Connecting to ${url}`); + this.ws = new WebSocket(url); + this.ws.onmessage = event => { const data = JSON.parse(event.data); this.jobs = data.jobs; this.paused = data.paused; }; - ws.onerror = err => { - alert('danger', `Socket connection failed. Error: ${err}`); + this.ws.onclose = () => { + if (this.ws.failed) + return this.wsConnect(false); + alert('danger', 'Socket connection closed'); }; - ws.onclose = err => { + this.ws.onerror = () => { + if (secure) + return this.ws.failed = true; alert('danger', 'Socket connection failed'); }; - + }, + init() { + this.wsConnect(); this.load(); }, load() {