From 6b962a74b3a93559716e8bd58526c4369851abdd Mon Sep 17 00:00:00 2001 From: Emmy D'Anello Date: Thu, 11 May 2023 17:13:52 +0200 Subject: [PATCH] Auto-restart the draw socket on close Signed-off-by: Emmy D'Anello --- draw/static/draw.js | 76 ++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 36 deletions(-) diff --git a/draw/static/draw.js b/draw/static/draw.js index 0f255f4..dc1e3ce 100644 --- a/draw/static/draw.js +++ b/draw/static/draw.js @@ -108,12 +108,6 @@ document.addEventListener('DOMContentLoaded', () => { elem => elem.addEventListener( 'click', () => document.location.hash = '#' + elem.innerText.toLowerCase())) - // Open a global websocket - socket = new WebSocket( - (document.location.protocol === 'https:' ? 'wss' : 'ws') + '://' + window.location.host - + '/ws/draw/' - ) - /** * Add alert message on the top on the interface. * @param message The content of the alert. @@ -750,41 +744,51 @@ document.addEventListener('DOMContentLoaded', () => { } } - // Listen on websockets and process messages from the server - socket.addEventListener('message', e => { - // Parse received data as JSON - const data = JSON.parse(e.data) + function setupSocket() { + // Open a global websocket + socket = new WebSocket( + (document.location.protocol === 'https:' ? 'wss' : 'ws') + '://' + window.location.host + '/ws/draw/' + ) - processMessage(data['tid'], data) - }) + // Listen on websockets and process messages from the server + socket.addEventListener('message', e => { + // Parse received data as JSON + const data = JSON.parse(e.data) - // Manage errors - socket.addEventListener('close', e => { - console.error('Chat socket closed unexpectedly') - }) + processMessage(data['tid'], data) + }) - // When the socket is opened, set the language in order to receive alerts in the good language - socket.addEventListener('open', e => { - socket.send(JSON.stringify({ - 'tid': tournaments[0].id, - 'type': 'set_language', - 'language': document.getElementsByName('language')[0].value, - })) - }) + // Manage errors + socket.addEventListener('close', e => { + console.error('Chat socket closed unexpectedly, restarting…') + setupSocket() + }) - for (let tournament of tournaments) { - // Manage the start form - let format_form = document.getElementById('format-form-' + tournament.id) - if (format_form !== null) { - format_form.addEventListener('submit', function (e) { - e.preventDefault() + // When the socket is opened, set the language in order to receive alerts in the good language + socket.addEventListener('open', e => { + socket.send(JSON.stringify({ + 'tid': tournaments[0].id, + 'type': 'set_language', + 'language': document.getElementsByName('language')[0].value, + })) + }) - socket.send(JSON.stringify({ - 'tid': tournament.id, - 'type': 'start_draw', - 'fmt': document.getElementById('format-' + tournament.id).value - })) - }) + for (let tournament of tournaments) { + // Manage the start form + let format_form = document.getElementById('format-form-' + tournament.id) + if (format_form !== null) { + format_form.addEventListener('submit', function (e) { + e.preventDefault() + + socket.send(JSON.stringify({ + 'tid': tournament.id, + 'type': 'start_draw', + 'fmt': document.getElementById('format-' + tournament.id).value + })) + }) + } } } + + setupSocket() })