test / server /server.js
akborana4's picture
Create server/server.js
912c620 verified
raw
history blame
1.06 kB
const WebSocket = require('ws');
const PORT = process.env.PORT || 8080;
const server = new WebSocket.Server({ port: PORT });
console.log(`WebSocket server running on ws://localhost:${PORT}`);
const rooms = {};
server.on('connection', socket => {
socket.on('message', msg => {
const data = JSON.parse(msg);
if (data.type === 'join') {
socket.roomId = data.room;
rooms[data.room] = rooms[data.room] || new Set();
rooms[data.room].add(socket);
}
if (data.type === 'sync') {
(rooms[socket.roomId] || []).forEach(client => {
if (client !== socket && client.readyState === WebSocket.OPEN) {
client.send(JSON.stringify(data));
}
});
}
});
socket.on('close', () => {
if (socket.roomId && rooms[socket.roomId]) {
rooms[socket.roomId].delete(socket);
if (rooms[socket.roomId].size === 0) {
delete rooms[socket.roomId];
}
}
});
});