diff --git a/server/src/index.ts b/server/src/index.ts index 18306be..0711e17 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -1,4 +1,4 @@ -import type { ClientMessage } from "../../shared.ts"; +import type { ClientMessage, ServerUserLeftMessage } from "../../shared.ts"; import handleClientMessage from "./handleClientMessage.ts"; import type { Room, WebSocketData } from "./types.ts"; @@ -62,6 +62,22 @@ const server = Bun.serve({ return; } + const sender = room.userConnections.get(ws); + + if (sender) { + // notify other clients that a client has left + const leaveMessage: ServerUserLeftMessage = { + type: "USER_LEFT", + payload: { + user: sender, + }, + }; + + for (const [socket] of room.userConnections) { + socket.send(JSON.stringify(leaveMessage)); + } + } + if (room.userConnections.size === 0) { rooms.delete(roomId); console.log("Cleaned up room", roomId);