-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
110 lines (93 loc) · 2.55 KB
/
server.js
File metadata and controls
110 lines (93 loc) · 2.55 KB
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
const express = require("express");
const path = require("path");
const socketio = require("socket.io");
const http = require("http");
const {
generateMessage,
getLeftOverMessages,
getMsgsInRoom,
removeMsgsInRoom,
generateAdminMessage,
} = require("./utils/messages");
const {
getUser,
getUsersInRoom,
addUser,
removeUser,
} = require("./utils/users");
const app = express();
const server = http.createServer(app);
const io = socketio(server);
const port = process.env.PORT || 5000;
let count = 0;
io.on("connection", (socket) => {
console.log("New connection");
socket.on("join", (userObject, callback) => {
const { error, user } = addUser({
id: socket.id,
userName: userObject.userName,
roomName: userObject.roomName,
});
if (error) {
return callback(error);
}
console.log(user);
socket.join(user.roomName);
// socket.emit(
// "serverToClientMessage",
// generateAdminMessage(count++, "Welcome " + user.userName, user.roomName)
// );
socket.broadcast
.to(user.roomName)
.emit(
"serverToClientMessage",
generateAdminMessage(
count++,
user.userName + " joined the room",
user.roomName
)
);
callback(generateAdminMessage(count++,"Welcome "+user.userName,user.roomName));
});
socket.on("clientToServerMessage", (msgObject, callback) => {
msgObject.status = "recOnServer";
msgObject.id = count++;
console.log("inside client to server " + msgObject);
const sender = getUser(socket.id);
if (sender) {
io.to(sender.roomName).emit(
"serverToClientMessage",
generateMessage(msgObject, sender.roomName)
);
}
});
socket.on("updateMessages", (lastMsgId, roomName, callback) => {
const missedMsgs = getLeftOverMessages(roomName, lastMsgId);
console.log("Missed ");
console.log(missedMsgs);
if (missedMsgs.length > 0) callback(missedMsgs);
});
socket.on("disconnect", () => {
const user = removeUser(socket.id);
if (user) {
const usersLeftinRoom = getUsersInRoom(user.roomName);
io.to(user.roomName).emit(
"serverToClientMessage",
generateAdminMessage(
count++,
user.userName + " left the room",
user.roomName
)
);
if (usersLeftinRoom.length === 0) {
removeMsgsInRoom(user.roomName);
}
}
});
});
app.get("/", (req, res) => {
res.send("hii welcome");
});
server.listen(port, () => {
console.log(`Server is listening on port ${port}!`);
});