From c9d8959d21b8f6fb1b806e1dd9e0092cd95a859e Mon Sep 17 00:00:00 2001 From: pb-coding Date: Wed, 11 Oct 2023 13:38:16 +0200 Subject: [PATCH] wip voice chat --- src/game/events.ts | 9 ++++++++- src/server.ts | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/game/events.ts b/src/game/events.ts index 4d2fc78..4b02ac6 100644 --- a/src/game/events.ts +++ b/src/game/events.ts @@ -27,9 +27,16 @@ export const handleJoinSession = ( callback && callback("success" satisfies SessionResponse); console.log("User joined session:", sessionId); - const numberOfClients = io.sockets.adapter.rooms.get(sessionId)?.size ?? 0; + const clientsInRoom = io.sockets.adapter.rooms.get(sessionId) || new Set(); + const numberOfClients = clientsInRoom.size ?? 0; console.log("Clients in room:", numberOfClients); io.to(sessionId).emit("clients-in-session", numberOfClients); + + clientsInRoom.forEach((clientId) => { + if (clientId !== socket.id) { + io.to(clientId).emit("initiate-voice-chat", { to: socket.id }); + } + }); }; export const handleLeaveSession = (socket: Socket, sessionId: string) => { diff --git a/src/server.ts b/src/server.ts index 4cbc8ef..39277bc 100644 --- a/src/server.ts +++ b/src/server.ts @@ -47,6 +47,11 @@ io.on("connection", (socket: Socket) => { handleLeaveSession(socket, sessionId); }); + socket.on("signal", (data: any) => { + const { to, signalData } = data; + io.to(to).emit("signal", { from: socket.id, signalData }); + }); + socket.on("new-game", (gameDetails: { sessionId: string }) => // TODO: get sessionId from socket instead of passing it from client handleNewGame(socket, gameDetails)