feat: propagate leave message to client

This commit is contained in:
Alexander Daichendt 2025-02-12 12:32:25 +01:00
parent 230a9560a5
commit 1bcf2fc177

View file

@ -1,4 +1,4 @@
import type { ClientMessage } from "../../shared.ts"; import type { ClientMessage, ServerUserLeftMessage } from "../../shared.ts";
import handleClientMessage from "./handleClientMessage.ts"; import handleClientMessage from "./handleClientMessage.ts";
import type { Room, WebSocketData } from "./types.ts"; import type { Room, WebSocketData } from "./types.ts";
@ -62,6 +62,22 @@ const server = Bun.serve<WebSocketData>({
return; 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) { if (room.userConnections.size === 0) {
rooms.delete(roomId); rooms.delete(roomId);
console.log("Cleaned up room", roomId); console.log("Cleaned up room", roomId);