diff --git a/static/js/index.js b/static/js/index.js index b539e72..e9455ae 100644 --- a/static/js/index.js +++ b/static/js/index.js @@ -13,6 +13,16 @@ let game_state = WAITING; let socket; +// Not totally reliable but better than nothing. +window.addEventListener("beforeunload", () => { + socket.emit("message", { + type: "DISCONNECT", + id: window.crypto.randomUUID(), + author: ID, + name: "", + }); +}); + document.addEventListener("DOMContentLoaded", () => { socket = io(); @@ -39,6 +49,10 @@ document.addEventListener("DOMContentLoaded", () => { playerConnected(data); break; + case "DISCONNECT": + playerDisconnected(data); + break; + case "KEEPALIVE": keepAlive(data); break; @@ -90,6 +104,12 @@ function playerConnected(data) { updatePlayerDom(); } +function playerDisconnected(data) { + console.log("deleting player"); + delete players[data.author]; + updatePlayerDom(); +} + /** * Process keep-alive packets: these are packets that check players are still online. *