Skip to content
This repository was archived by the owner on Mar 10, 2024. It is now read-only.

Commit b9baa83

Browse files
add new ws event
1 parent f022562 commit b9baa83

File tree

1 file changed

+46
-10
lines changed

1 file changed

+46
-10
lines changed

src/socket/socket.js

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,17 @@ module.exports = function (wss) {
3232
socket.isAlive = true;
3333
const uuid = utils.uuid(Math.random().toString());
3434

35+
const broadcastRoomExceptSender = (data) => {
36+
Object.entries(rooms[data.room]).forEach(([, sock]) => {
37+
if(sock === socket) {
38+
sock.send(JSON.stringify({
39+
code: "OK",
40+
time: Date.now(),
41+
}));
42+
}else sock.send(JSON.stringify(data));
43+
});
44+
}
45+
3546
const leave = room => {
3647
if(! rooms[room][uuid]) return;
3748
// if the one exiting is the last one, destroy the room
@@ -48,19 +59,13 @@ module.exports = function (wss) {
4859
switch (data.event) {
4960
case 'update':
5061
try {
51-
Object.entries(rooms[data.room]).forEach(([, sock]) => {
52-
if(sock === socket) {
53-
sock.send(JSON.stringify({
54-
code: "OK",
55-
uuid: data['uuid'],
56-
time: Date.now(),
57-
}));
58-
}else sock.send(JSON.stringify(data));
59-
});
62+
broadcastRoomExceptSender(data);
6063
db.updateLastViewedDate(data.room);
6164
db.applyRequests(data.room, data.data);
6265
} catch (err) {
63-
throw new Error(err);
66+
if (config.DEBUG) {
67+
console.error(err);
68+
}
6469
}
6570
break;
6671
case 'join':
@@ -72,6 +77,37 @@ module.exports = function (wss) {
7277
rooms[data.room][uuid] = socket;
7378
}
7479
break;
80+
81+
case 'language':
82+
try {
83+
broadcastRoomExceptSender(data);
84+
db.changeLanguage(data.room, data.language);
85+
} catch (err) {
86+
if (config.DEBUG) {
87+
console.error(err);
88+
}
89+
}
90+
break;
91+
case 'changeTabSize':
92+
try {
93+
broadcastRoomExceptSender(data);
94+
db.changeTabSize(data.room, data.tabSize);
95+
} catch (err) {
96+
if (config.DEBUG) {
97+
console.error(err);
98+
}
99+
}
100+
break;
101+
case 'changeCustomName':
102+
try {
103+
broadcastRoomExceptSender(data);
104+
db.changeCustomName(data.customName);
105+
} catch (err) {
106+
if (config.DEBUG) {
107+
console.error(err);
108+
}
109+
}
110+
break;
75111
case 'ping':
76112
socket.send('pong');
77113
break;

0 commit comments

Comments
 (0)