87 lines
2.6 KiB
JavaScript
87 lines
2.6 KiB
JavaScript
const express = require("express");
|
|
const cors = require("cors");
|
|
const cookieParser = require("cookie-parser");
|
|
const { Server } = require("socket.io");
|
|
const { createServer } = require("http");
|
|
const userRoute = require("./Routes/user.routes.js");
|
|
const { checkAuthenticated } = require("./Middlewares/authentication.js");
|
|
const dotenv = require("dotenv");
|
|
|
|
dotenv.config({
|
|
path: "./.env",
|
|
});
|
|
|
|
const app = express();
|
|
|
|
const corsOptions = {
|
|
origin: process.env.FRONTEND_URI,
|
|
methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
|
|
credentials: true,
|
|
};
|
|
|
|
const server = createServer(app);
|
|
|
|
const io = new Server(server, {
|
|
cors: {
|
|
origin: process.env.FRONTEND_URI,
|
|
methods: ["GET", "PUT", "POST", "PATCH", "DELETE"],
|
|
credentials: true,
|
|
},
|
|
});
|
|
|
|
app.use(cors(corsOptions));
|
|
app.use(express.json({ limit: "16kb" }));
|
|
app.use(express.urlencoded({ extended: true, limit: "16kb" }));
|
|
app.use(express.static("public"));
|
|
app.use(cookieParser());
|
|
|
|
app.get("/", (req, res) => {
|
|
return res.send("Hiddskpkpk...");
|
|
});
|
|
|
|
app.use("/api/v1", userRoute);
|
|
|
|
const emailToSocketIdMap = new Map();
|
|
const socketidToEmailMap = new Map();
|
|
|
|
io.on("connection", (socket) => {
|
|
// console.log(`Socket Connected`, socket.id);
|
|
socket.on("room:join", (data) => {
|
|
const { email, room } = data;
|
|
emailToSocketIdMap.set(email, socket.id);
|
|
socketidToEmailMap.set(socket.id, email);
|
|
io.to(room).emit("user:joined", { email, id: socket.id });
|
|
socket.join(room);
|
|
io.to(socket.id).emit("room:join", data);
|
|
});
|
|
|
|
socket.on("message", ({ message, room }) => {
|
|
// console.log(message);
|
|
// console.log("Message is : ", message, "Room is : ", room);
|
|
//for sending the message all the users that are connected < --- > io.emit("receive-message", message);
|
|
//for sending the message for all the user except us <----> socket.broadcast.emit("receive-message", message);
|
|
socket.join(room);
|
|
io.to(room).emit("receive-message", message); // For sending the message for perticular room or user
|
|
});
|
|
|
|
socket.on("user:call", ({ to, offer }) => {
|
|
io.to(to).emit("incomming:call", { from: socket.id, offer });
|
|
});
|
|
|
|
socket.on("call:accepted", ({ to, ans }) => {
|
|
io.to(to).emit("call:accepted", { from: socket.id, ans });
|
|
});
|
|
|
|
socket.on("peer:nego:needed", ({ to, offer }) => {
|
|
//console.log("peer:nego:needed", offer);
|
|
io.to(to).emit("peer:nego:needed", { from: socket.id, offer });
|
|
});
|
|
|
|
socket.on("peer:nego:done", ({ to, ans }) => {
|
|
// console.log("peer:nego:done", ans);
|
|
io.to(to).emit("peer:nego:final", { from: socket.id, ans });
|
|
});
|
|
});
|
|
|
|
module.exports = server;
|