const express = require('express'); const http = require('http'); const WebSocket = require('ws'); const app = express(); const server = http.createServer(app); const wss = new WebSocket.Server({ server }); const rooms = new Map(); app.get('/', (req, res) => { res.send(` Dubem Realtime Rooms

Join a Room & Send Messages

`); }); wss.on('connection', ws => { let currentRoom = null; console.log("fresh connect") ws.on('message', raw => { let msg; console.log("message enter") try { msg = JSON.parse(raw); } catch (e) { return; } if (msg.action === 'join' && msg.roomId) { if (currentRoom && rooms.has(currentRoom)) { rooms.get(currentRoom).delete(ws); } currentRoom = msg.roomId; if (!rooms.has(currentRoom)) rooms.set(currentRoom, new Set()); rooms.get(currentRoom).add(ws); } if (msg.action === 'post' && msg.roomId && msg.message) { const clients = rooms.get(msg.roomId); if (!clients) return; const payload = JSON.stringify({ roomId: msg.roomId, message: msg.message, timestamp: Date.now() }); for (const client of clients) { if (client.readyState === WebSocket.OPEN) { client.send(payload); } } } console.log("message down") }); ws.on('close', () => { if (currentRoom && rooms.has(currentRoom)) { rooms.get(currentRoom).delete(ws); } console.log("room close") }); }); const PORT = process.env.PORT || 7860; server.listen(PORT, () => console.log(`✅ Activity server running at http://localhost:${PORT}`));