Files
CropCompass/Backend/app.js
T

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;