From b3561bd1551120e3a47911b1a4c9621aeaa0b012 Mon Sep 17 00:00:00 2001 From: Sourya Banerjee Date: Thu, 7 Nov 2024 18:10:59 +0530 Subject: [PATCH] Chat features added --- .gitignore | 3 ++- package.json | 3 +++ realtime-voicecall-backend.rar | Bin 17016 -> 0 bytes src/index.ts | 41 +++++++++++++++++++++++++++++++-- yarn.lock | 15 ++++++++++++ 5 files changed, 59 insertions(+), 3 deletions(-) delete mode 100644 realtime-voicecall-backend.rar diff --git a/.gitignore b/.gitignore index 30bc162..7af7f04 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -/node_modules \ No newline at end of file +/node_modules +.env \ No newline at end of file diff --git a/package.json b/package.json index e3fab96..c2f03e7 100644 --- a/package.json +++ b/package.json @@ -13,10 +13,13 @@ "description": "", "dependencies": { "cors": "^2.8.5", + "crypto-js": "^4.2.0", + "dotenv": "^16.4.5", "express": "^4.21.1", "socket.io": "^4.8.0" }, "devDependencies": { + "@types/crypto-js": "^4.2.2", "@types/express": "^5.0.0", "@types/node": "^22.7.5", "@types/socket.io": "^3.0.2", diff --git a/realtime-voicecall-backend.rar b/realtime-voicecall-backend.rar deleted file mode 100644 index 9ccf1a405f7505efdd06204efbbed8734ca0c099..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17016 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 diff --git a/src/index.ts b/src/index.ts index 35455f1..339660d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ import express, { Request, Response } from "express"; import { createServer, Server as HTTPServer } from "http"; import { Server as SocketIOServer, Socket } from "socket.io"; import cors from "cors"; +require("dotenv").config(); // Initialize Express const app = express(); @@ -9,7 +10,8 @@ const app = express(); // Set up CORS middleware for Express app.use( cors({ - origin: "https://realtime-voicecall.vercel.app", // Update this to the origin of your client + origin: + process.env.NEXT_FRONTEND_URL || "https://realtime-voicecall.vercel.app", // Update this to the origin of your client methods: ["GET", "POST"], credentials: true, // Allow credentials (e.g., cookies) if needed }) @@ -22,7 +24,8 @@ const httpServer: HTTPServer = createServer(app); const io = new SocketIOServer(httpServer, { path: "/socket", // Define the WebSocket path cors: { - origin: "https://realtime-voicecall.vercel.app", // Update this to the origin of your client + origin: + process.env.NEXT_FRONTEND_URL || "https://realtime-voicecall.vercel.app", // Update this to the origin of your client methods: ["GET", "POST"], credentials: true, // Allow credentials (e.g., cookies) if needed }, @@ -56,6 +59,8 @@ io.on("connection", (socket: Socket) => { socket.on("disconnect", () => { onlineUsers.delete(socket.id); io.emit("online-users", Array.from(onlineUsers.values())); + io.emit("user-diconnected", socket.id); + console.log("User Disconnected", socket.id); }); // Handle call-related events @@ -72,6 +77,38 @@ io.on("connection", (socket: Socket) => { } }); + socket.on("send-message", (message) => { + const { recipentSocketId } = message; + + // Emit message to the specific recipient + const recipient = onlineUsers.get(recipentSocketId); + console.log("recipientSocketId:", recipient, recipentSocketId, onlineUsers); + if (recipient) { + io.to(recipentSocketId).emit("receive-message", message); + console.log("Message Received:", message); + } + }); + + socket.on("send-user-typing", (user) => { + const { recipentSocketId } = user; + + // Emit message to the specific recipient + const recipient = onlineUsers.get(recipentSocketId); + if (recipient) { + io.to(recipentSocketId).emit("receive-user-typing"); + } + }); + + socket.on("send-user-typing-end", (user) => { + const { recipentSocketId } = user; + + // Emit message to the specific recipient + const recipient = onlineUsers.get(recipentSocketId); + if (recipient) { + io.to(recipentSocketId).emit("receive-user-typing-end"); + } + }); + socket.on("call-accepted", (data: { to: string }) => { const caller = onlineUsers.get(socket.id); socket.to(data.to).emit("call-accepted", { caller }); diff --git a/yarn.lock b/yarn.lock index 2e67c09..c14e8ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -79,6 +79,11 @@ dependencies: "@types/node" "*" +"@types/crypto-js@^4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.2.2.tgz#771c4a768d94eb5922cc202a3009558204df0cea" + integrity sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ== + "@types/express-serve-static-core@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz#91f06cda1049e8f17eeab364798ed79c97488a1c" @@ -259,6 +264,11 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +crypto-js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -297,6 +307,11 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"