feat: propagate leave message to client
This commit is contained in:
parent
230a9560a5
commit
1bcf2fc177
1 changed files with 17 additions and 1 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue