Files
aza/APP/screen-share/signal-server/server.js

50 lines
1.1 KiB
JavaScript
Raw Normal View History

2026-03-25 14:14:07 +01:00
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}`);