const WebSocket = require('ws'); const PORT = process.env.PORT || 9090; const wss = new WebSocket.Server({ port: PORT }); const peers = new Map(); wss.on('connection', (ws) => { let peerId = null; ws.on('message', (raw) => { let msg; try { msg = JSON.parse(raw); } catch { return; } switch (msg.type) { case 'register': { peerId = msg.peerId; peers.set(peerId, ws); console.log(`[+] ${peerId} registriert (${peers.size} Peers online)`); ws.send(JSON.stringify({ type: 'registered', peerId })); break; } case 'offer': case 'answer': case 'ice-candidate': case 'control': { const target = peers.get(msg.target); if (target && target.readyState === WebSocket.OPEN) { target.send(JSON.stringify({ ...msg, from: peerId })); } break; } } }); ws.on('close', () => { if (peerId) { peers.delete(peerId); console.log(`[-] ${peerId} getrennt (${peers.size} Peers online)`); } }); }); console.log(`Signal-Server laeuft auf ws://0.0.0.0:${PORT}`);