Add before unload event to more consistently remove players who leave
This commit is contained in:
parent
bfb92e89b0
commit
0a1011f0e5
@ -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.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user