-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsocket.js
More file actions
110 lines (103 loc) · 3.14 KB
/
Copy pathsocket.js
File metadata and controls
110 lines (103 loc) · 3.14 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 {
emitLetterrs,
createLetter,
editLetter,
deleteLetter,
getLetters,
} = require("./controllers/letter");
const {
saveMessage,
getMessages,
updateMessages,
deleteMessage,
deleteLetterMessage,
} = require("./controllers/messages");
const {
setConnection,
emitConnections,
allConnections,
} = require("./controllers/userConnection");
const userConnection = require("./db/connectionSchema");
const webSocket = (io) =>
io.on("connection", (socket) => {
var emp_id;
/**Registers new connected user to the db */
const user = async (emp) => {
const users = await userConnection.find({
emp_id: emp,
status: "connected",
});
const connectedusers = await allConnections();
users.length
? io.sockets.emit("users", connectedusers)
: setConnection(
{ emp_id, status: "connected", connected_time: Date.now() },
io
);
};
/**onConnect save the the connected user to db */
socket.on("onConnect", (data) => {
emp_id = data.emp_id;
emp_id ? user(data.emp_id) : () => {};
});
socket.on("users", async () => {
const users = await allConnections();
io.sockets.emit("users", users);
});
socket.emit("outgoing data", new Date());
/**recieving chat from client */
socket.on("submit", (data) => {
saveMessage(data, io);
}); //for saving message
socket.on("update", (data) => updateMessages(data, io)); //for updating message
socket.on("delete", (data) => deleteMessage(data, io)); // for deleting message
socket.on("delete_letter_message", (data) => deleteLetterMessage(data, io)); // for deleting message
/**typing broadcast */
socket.on("typing", (data) =>
io.sockets.emit("typing", { emp_id: data.emp_id })
);
socket.on("typing_letter", (data) =>
io.sockets.emit("typing_letter", { emp_id: data.emp_id })
);
/**sending chat message */
socket.on("chat", async () => {
const messages = await getMessages();
io.sockets.emit("chat", messages);
});
/**updating chat message */
socket.on("update", (data) => updateMessages(data, io));
/**letter on socket connection */
socket.on("letters", async () => {
const letters = await getLetters();
io.sockets.emit("letters", letters);
});
socket.on("create_letter", (data) => createLetter(data, io)); //create letter
socket.on("update_letter", (data) => editLetter(data, io)); //update letter
socket.on("delete_letter", (data) => deleteLetter(data, io)); //delete letter
/**update db while user is diconnected */
socket.on("disConnect", () => {
emp_id
? setConnection(
{
emp_id,
status: "disconnected",
disconnected_time: Date.now(),
},
io
)
: () => {};
});
socket.on("disconnect", () => {
emp_id
? setConnection(
{
emp_id,
status: "disconnected",
disconnected_time: Date.now(),
},
io
)
: () => {};
});
});
module.exports = { webSocket };