This repository has been archived by the owner on Jan 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
95 lines (81 loc) · 2.92 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
const
express = require('express'),
app = express(),
http= require('http').Server(app),
ejs = require('ejs'),
compression = require('compression'),
io = require('socket.io')(http),
{ ExpressPeerServer } = require('peer'),
peerServer = ExpressPeerServer(http,{debug:true})
port = process.env.PORT || 5000
app.use(compression())
app.use(express.static('src'))
app.set('view engine','ejs')
let onlineUsers = []
let users = []
app.use(function(req,res,next){
// res.locals.peerServer = peerServer
res.locals.port = port
next()
})
const index = require('./dev/modules/routes/index')
const messages = require('./dev/modules/routes/messages')
const classes = require('./dev/modules/routes/classes')
const workgroups = require('./dev/modules/routes/workgroups')
const seating = require('./dev/modules/routes/seating')
const notFound = require('./dev/modules/routes/notfound')
app.use('/peerjs',peerServer)
app.use('/',index)
app.use('/',messages)
app.use('/',classes)
app.use('/',workgroups)
app.use('/',seating)
app.use('/',notFound)
io.on('connection',(socket)=>{
let thisUser = socket.id
let chair
onlineUsers.push({
socketID:thisUser
})
socket.on('join-class',(roomID, userID)=>{
console.log(`${userID} joined ${roomID}`)
socket.join(roomID)
socket.to(roomID).broadcast.emit('user-connected',userID)
let user = onlineUsers.find((user)=> user.socketID == thisUser)
user.peerID = userID
})
socket.on("disconnect",(data)=>{
console.log(`${thisUser} disconnected`)
if(onlineUsers.find((user)=>{return user.socketID == thisUser})){
try{
io.emit('clean-up',{
user:onlineUsers.find((user)=>{return user.socketID == thisUser}),
chair
})
onlineUsers.splice(onlineUsers.indexOf(onlineUsers.findIndex((user)=>{return user.socketID == thisUser})),1)
}catch(err){
console.log(err)
}
}
io.emit("online users",onlineUsers)
})
socket.on('user-seated',(data)=>{
chair = data
if(data.reseated){
console.log(`User reseated at ${data.new.table},${data.new.chair} from ${data.old.table},${data.old.chair}`)
socket.to(data.roomID).broadcast.emit('user-seated',data)
}else{
console.log(`User seated at ${data.new.table},${data.new.chair}`)
socket.to(data.roomID).broadcast.emit('user-seated',data)
}
// console.log(io.sockets.adapter.rooms)
})
socket.on('send-message',(data)=>{
const date = new Date()
data.date = `${date.getHours() <= 9 ? '0' + date.getHours():date.getHours()}:${date.getMinutes() <= 9 ? '0' + date.getMinutes():date.getMinutes()}`
io.sockets.emit('render-message',data)
})
})
http.listen(port,(a,b)=>{
console.log(`Exposed on port ${port}`)
})