-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathsocketIo.js
More file actions
77 lines (64 loc) · 2.01 KB
/
Copy pathsocketIo.js
File metadata and controls
77 lines (64 loc) · 2.01 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
const io = require('socket.io')(require('./appInitialization').httpInstance);
const { db } = require('./database/models');
const activeUsers = {}
let roomCount = 0;
const activeRooms = {};
io.on('connection', function (socket) {
console.log("a user has connected");
const removeFromActiveUsers = (userId) => {
delete activeUsers[userId]
console.log(`user ${userId} has disconnected`);
}
const joinBuddyRoom = (userId, buddyId) => {
if(activeUsers[buddyId]) {
if(activeUsers[buddyId].buddyId !== userId && activeUsers[buddyId].userId !== userId) {
connectToNewRoom(userId, buddyId)
} else {
const buddyRoom = activeUsers[buddyId].activeRoom;
activeUsers[userId] = activeUsers[buddyId];
socket.join(buddyRoom);
console.log(`User${userId} has joined ${buddyRoom}`)
}
} else {
connectToNewRoom(userId, buddyId);
}
}
const connectToNewRoom = (userId, buddyId) => {
const newRoom = `room${roomCount++}`;
if(activeRooms[newRoom]) {
connectToNewRoom(userId);
return;
} else {
activeUsers[userId] = activeRooms[newRoom] = {
activeRoom: newRoom,
userId: userId,
buddyId: buddyId,
}
socket.join(newRoom);
console.log(`User${userId} has joined ${newRoom}`)
}
}
defaultNamespaceSocket = socket;
socket.emit('news', { hello: 'world' });
socket.on('message', async ({userId, buddyId, text}) => {
db.addMessage(userId, buddyId, text);
if(!activeUsers[userId]) {
await joinBuddyRoom(userId, buddyId)
}
io.to(activeUsers[userId].activeRoom).emit('recieve', {text, senderId: userId, recieverId: buddyId});
console.log(text);
});
socket.on('connectMessage', ({userId, buddyId}) => {
joinBuddyRoom(userId, buddyId);
})
socket.send("You have connected to the server");
socket.on('discon', (userId) => {
removeFromActiveUsers(userId);
})
socket.on('disconnect', (reason) => {
console.log(reason);
})
});
module.exports = {
io,
};