Migrate to "robust-websocket" to have more stable reconnect.

This commit is contained in:
Oliver Rümpelein 2021-11-07 12:59:23 +01:00
parent 45e07d9393
commit 45f67d2cdf
3 changed files with 3 additions and 27 deletions

View file

@ -21,6 +21,7 @@ fun HTML.createGameMasterDocument() {
src = "https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js" src = "https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"
defer = true defer = true
} }
script { src = "https://unpkg.com/robust-websocket@1.0.0/robust-websocket.js" }
script { src = "/assets/buzzerWebSocket.js" } script { src = "/assets/buzzerWebSocket.js" }
} }
body { body {

View file

@ -21,6 +21,7 @@ fun HTML.createPlayerDocument() {
src = "https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js" src = "https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"
defer = true defer = true
} }
script { src = "https://unpkg.com/robust-websocket@1.0.0/robust-websocket.js" }
script { script {
src = "/assets/buzzerWebSocket.js" src = "/assets/buzzerWebSocket.js"
} }

View file

@ -2,33 +2,7 @@
function startWebSocket(socketPath, messageHandler) { function startWebSocket(socketPath, messageHandler) {
const protocolPrefix = (window.location.protocol === 'https:') ? 'wss:' : 'ws:'; const protocolPrefix = (window.location.protocol === 'https:') ? 'wss:' : 'ws:';
const webSocket = new WebSocket(`${protocolPrefix}//${location.host}${socketPath}`); const webSocket = new RobustWebSocket(`${protocolPrefix}//${location.host}${socketPath}`);
webSocket.onerror = (ev) => {
switch (ev.code) {
case 1000:
console.log("[WS]: Closed normally")
break
default:
console.log("[WS]: Closed abnormally")
reconnectWebSocket(socketPath, messageHandler);
}
};
webSocket.onclose = (ev) => {
switch (ev.code) {
case 'ECONNREFUSED':
reconnectWebSocket(socketPath, messageHandler);
break
default:
webSocket.onerror(ev);
}
};
webSocket.onmessage = messageHandler ? messageHandler : () => {}; webSocket.onmessage = messageHandler ? messageHandler : () => {};
Alpine.data.buzzerWebSocket = webSocket Alpine.data.buzzerWebSocket = webSocket
} }
function reconnectWebSocket(socketPath, messageHandler) {
setTimeout(() => {
console.log("[WS]: Reconnecting...")
startWebSocket(socketPath, messageHandler)
}, 2000)
}