diff --git a/static/index.js b/static/index.js index 0e3750a..856c4aa 100644 --- a/static/index.js +++ b/static/index.js @@ -98,6 +98,10 @@ function readUrl(urlString) { }, async onDisconnect() { + if (session.errored) return; // Display the error screen + + console.info("showing disconnected refresh screen"); + let duration = 5000 + Math.random() * 1000; while (true) { console.info("waiting a bit for the server to come back up", duration); diff --git a/static/session.js b/static/session.js index d24c5a7..443a8d8 100644 --- a/static/session.js +++ b/static/session.js @@ -81,6 +81,7 @@ class Session extends EventTarget { super(); this.userId = userId; this.secret = secret; + this.errored = false; } async #recvJson() { @@ -106,6 +107,7 @@ class Session extends EventTarget { } #dispatchError(source, kind, message) { + this.errored = true; this.dispatchEvent( Object.assign(new Event("error"), { source, @@ -123,7 +125,7 @@ class Session extends EventTarget { this.ws.addEventListener("error", (event) => { console.error("WebSocket connection error", error); - this.dispatchEvent(Object.assign(new Event("error"), event)); + this.#dispatchError(event, "ws", "WebSocket connection error"); }); this.ws.addEventListener("message", (event) => { @@ -288,6 +290,7 @@ class Session extends EventTarget { } sendViewport({ left, top, right, bottom }) { + console.trace({ left, top, right, bottom }); this.#sendJson({ request: "viewport", topLeft: { x: left, y: top },