-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
105 lines (83 loc) · 2.23 KB
/
server.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
const express = require('express');
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server)
const { v4:uuidv4} = require('uuid');
const { ExpressPeerServer } = require('peer');
const peerServer = ExpressPeerServer(server,{
debug:true
});
const cookieSession = require('cookie-session');
const { nextTick } = require('process')
const passport = require('passport')
require('./passport-setup');
let USER_LIST = [];
//middleware
app.use(cookieSession({
name: 'session',
keys: ['key1', 'key2']
}))
app.set('view engine','ejs');
app.use(express.static('public'));
app.use('/peerjs',peerServer);
app.use(passport.initialize());
app.use(passport.session());
var ROOM_ID;
app.get('/',(req,res)=>{
ROOM_ID = uuidv4();
if(req.user)
{
res.redirect(`/${ROOM_ID}`);
}
else {
res.redirect('/auth/google')
}
})
//logging out and destroying the session
app.get('/logout', (req, res) => {
req.logout();
req.session = null;
res.send('<h3>Left the meeting</h3><br><a href="/">Start a new meeting</a>');
})
app.get('/:room',(req,res)=>{
ROOM_ID = req.params.room;
if(req.user)
{
res.render('room',{roomId:ROOM_ID});
}
else {
res.redirect('/auth/google')
}
})
app.get('/',(req,res)=>{
res.redirect(`/${uuidv4()}`);
})
app.get('/:room',(req,res)=>{
res.render('room',{roomId:req.params.room});
})
io.on('connection',socket =>{
socket.on('join-room',(roomId,userId)=>{
socket.join(roomId);
socket.to(roomId).emit('user-connected',userId);
socket.on('message',message =>{
io.to(roomId).emit('createMessage',message);
})
})
})
//google authentication
app.get('/auth/google/failure', (req, res) => {
res.send('Could Not Login, Try Again...');
})
app.get('/auth/google',
passport.authenticate('google', {
scope:
['email', 'profile'],
prompt: 'select_account' //to allow user to select a different account once logged out
}
));
app.get('/auth/google/callback',
passport.authenticate('google', {
successRedirect: (ROOM_ID) ? `/${ROOM_ID}` : '/',
failureRedirect: '/auth/google/failure'
}));
server.listen(process.env.PORT||3000);