-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
135 lines (109 loc) · 3.97 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
require('dotenv').config({path:"./config.env"});
const login = require('./controllers/login');
const path = require('path');
console.log(__dirname);
const express = require('express');
const app = express();
const port = process.env.PORT||5000;
const https = require('httpolyglot');
const register = require('./controllers/register');
const dbConnect = require('./middleware/dbConnect');
const forgotPassword =require('./controllers/forgotPassword');
const resetPassword = require('./controllers/resetPassword');
const validateToken = require('./controllers/validateToken')
const errorHandler = require('./middleware/error');
const {Server} = require('socket.io');
const cors = require('cors');
const corsMiddleware = require('./middleware/corsMiddleware');
// const https = require('https');
app.use(cors({
origin:"*",
methods:['GET','POST'],
}));
app.use(corsMiddleware);
// app.get('/',(req,res)=>{
// res.send({"heuu":"jjd"});
// })
app.use(express.json());
dbConnect();
app.post('/auth/login',login);
app.post('/auth/register',register);
app.post('/auth/forgot-password',forgotPassword);
app.get('/auth/reset-password/:id/:token',resetPassword);
app.post('/auth/reset-password/:id/:token',resetPassword);
app.post('/auth/validateToken',validateToken);
app.use(errorHandler);
const {v4:uuidv4} = require('uuid');
// const __dirname1 = path.resolve();
// if(process.env.NODE_ENV=='production'){
// app.use(express.static(path.join(__dirname1,'client/build')));
// app.get('*',(req,res)=>{
// res.sendfile(path.resolve(__dirname1,'client','build','index.html'));
// })
// }
// else{
// app.get('/',(req,res)=>{
// res.send("API OS RUNNING SUCESSFULLY");
// })
// }
const server= app.listen(port,()=>{
console.log(`server is up and running on port ${port}`);
});
const io = new Server(server,{
cors: { origin: "*", }
});
const userS={}
const users = {};
const socketToRoom = {};
io.on('connection',async(socket)=>{
console.log('client connected ',socket.id);
socket.on('create-room',async(cb)=>{
console.log('create room button listened ');
const room = uuidv4();
console.log("room created with id",room);
cb(room);
})
socket.on("join room", roomID => {
console.log('join room called by ',socket.id)
if (users[roomID]) {
const length = users[roomID].length;
if (length === 4) {
socket.emit("room full");
return;
}
users[roomID].push(socket.id);
} else {
users[roomID] = [socket.id];
}
socketToRoom[socket.id] = roomID;
const usersInThisRoom = users[roomID].filter(id => id !== socket.id);
socket.emit("all users", usersInThisRoom);
});
socket.on("disconnect", () => {
console.log('user disconnected',userS[socket.id]);
const roomID = socketToRoom[socket.id];
let room = users[roomID];
if (room) {
room = room.filter(id => id !== socket.id);
users[roomID] = room;
}
io.in(roomID).emit('user disconnected',socket.id,userS[socket.id]);
});
socket.on("join-room",(roomId,username,cb)=>{
console.log('join room called onserver by on ',username," ",roomId);
socket.join(roomId);
userS[socket.id]=username;
cb(roomId);
console.log("emitting the joined event")
socket.to(roomId).emit('joined',{newUser:userS[socket.id]});
})
socket.on("send-message",(message,roomID,socks)=>{
socket.to(roomID).emit('recieve-message',message,socks);
});
socket.on("sending signal", payload => {
io.to(payload.userToSignal).emit("user joined", { signal: payload.signal, callerID: payload.callerID });
});
socket.on("returning signal", payload => {
io.to(payload.callerID).emit("receiving returned signal", { signal: payload.signal, id: socket.id });
});
});