Работает автоматически через WebSocket-сигналинг. Нужен маленький Node.js-сервер (ниже). Если хочешь полностью без сервера — предыдущая копи‑паст версия осталась в истории.
node signaling-server.js.signaling-server.js)// Очень минимальный WebSocket signaling для двух участников
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3001 });
const rooms = new Map();
wss.on('connection', ws => {
ws.on('message', msg => {
try {
const m = JSON.parse(msg);
if (m.cmd === 'join') {
const { room } = m;
ws.room = room;
if (!rooms.has(room)) rooms.set(room, []);
rooms.get(room).push(ws);
// keep only last two
rooms.set(room, rooms.get(room).slice(-2));
ws.send(JSON.stringify({ cmd:'joined' }));
} else if (m.cmd === 'signal') {
const peers = rooms.get(ws.room) || [];
for (const p of peers) {
if (p !== ws && p.readyState === WebSocket.OPEN) p.send(JSON.stringify({ cmd:'signal', data: m.data }));
}
}
} catch (e) { console.error('parse err', e); }
});
ws.on('close', () => {
if (!ws.room) return;
const peers = (rooms.get(ws.room) || []).filter(p => p !== ws);
if (peers.length) rooms.set(ws.room, peers); else rooms.delete(ws.room);
});
});
console.log('Signaling server on ws://localhost:3001');