update
This commit is contained in:
11
APP/screen-share/signal-server/package.json
Normal file
11
APP/screen-share/signal-server/package.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "screen-share-signal-server",
|
||||
"version": "1.0.0",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
"start": "node server.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"ws": "^8.16.0"
|
||||
}
|
||||
}
|
||||
49
APP/screen-share/signal-server/server.js
Normal file
49
APP/screen-share/signal-server/server.js
Normal file
@@ -0,0 +1,49 @@
|
||||
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}`);
|
||||
Reference in New Issue
Block a user