akborana4 commited on
Commit
912c620
·
verified ·
1 Parent(s): 3ecd7e0

Create server/server.js

Browse files
Files changed (1) hide show
  1. server/server.js +36 -0
server/server.js ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const WebSocket = require('ws');
2
+
3
+ const PORT = process.env.PORT || 8080;
4
+ const server = new WebSocket.Server({ port: PORT });
5
+ console.log(`WebSocket server running on ws://localhost:${PORT}`);
6
+
7
+ const rooms = {};
8
+
9
+ server.on('connection', socket => {
10
+ socket.on('message', msg => {
11
+ const data = JSON.parse(msg);
12
+
13
+ if (data.type === 'join') {
14
+ socket.roomId = data.room;
15
+ rooms[data.room] = rooms[data.room] || new Set();
16
+ rooms[data.room].add(socket);
17
+ }
18
+
19
+ if (data.type === 'sync') {
20
+ (rooms[socket.roomId] || []).forEach(client => {
21
+ if (client !== socket && client.readyState === WebSocket.OPEN) {
22
+ client.send(JSON.stringify(data));
23
+ }
24
+ });
25
+ }
26
+ });
27
+
28
+ socket.on('close', () => {
29
+ if (socket.roomId && rooms[socket.roomId]) {
30
+ rooms[socket.roomId].delete(socket);
31
+ if (rooms[socket.roomId].size === 0) {
32
+ delete rooms[socket.roomId];
33
+ }
34
+ }
35
+ });
36
+ });