From 61f2a2c674187006ebd0a313af1ff1f16cb0c029 Mon Sep 17 00:00:00 2001 From: pb-coding Date: Fri, 13 Oct 2023 11:38:41 +0200 Subject: [PATCH] wip testing voice and video chat --- src/config/allowedOrigins.ts | 6 ++++- src/server.ts | 46 +++++++++++++++++++++++++++++++++--- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/config/allowedOrigins.ts b/src/config/allowedOrigins.ts index 489b86a..277c73b 100644 --- a/src/config/allowedOrigins.ts +++ b/src/config/allowedOrigins.ts @@ -1,3 +1,7 @@ -const allowedOrigins = ["http://localhost:3000", "https://localhost:3001"]; +const allowedOrigins = [ + "http://localhost:3000", + "http://localhost:5173", + "http://localhost:3001", +]; export default allowedOrigins; diff --git a/src/server.ts b/src/server.ts index 39277bc..abeab6b 100644 --- a/src/server.ts +++ b/src/server.ts @@ -47,9 +47,49 @@ 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("create-offer", (offerData) => { + const { offerDescription, sessionName } = offerData; + + if (!sessionName || sessionName == "") + return console.log("No session name provided"); + + const clientsInRoom = + io.sockets.adapter.rooms.get(sessionName) || new Set(); + clientsInRoom.forEach((clientId) => { + if (clientId !== socket.id) { + io.to(clientId).emit("offer-made", offerDescription); + } + }); + }); + + socket.on("answer-call", (answerData) => { + const { answerDescription, sessionName } = answerData; + + if (!sessionName || sessionName == "") + return console.log("No session name provided"); + + const clientsInRoom = + io.sockets.adapter.rooms.get(sessionName) || new Set(); + clientsInRoom.forEach((clientId) => { + if (clientId !== socket.id) { + io.to(clientId).emit("answer-made", answerDescription); + } + }); + }); + + socket.on("ice-candidate", (candidateData) => { + const { candidate, sessionName } = candidateData; + + if (!sessionName || sessionName == "") + return console.log("No session name provided"); + + const clientsInRoom = + io.sockets.adapter.rooms.get(sessionName) || new Set(); + clientsInRoom.forEach((clientId) => { + if (clientId !== socket.id) { + io.to(clientId).emit("add-ice-candidate", candidate); + } + }); }); socket.on("new-game", (gameDetails: { sessionId: string }) =>