#node.js #webrtc #peerjs
#node.js #webrtc #пириджс
Вопрос:
Я создаю приложение для видеоконференции (для практических целей) и пытаюсь понять, как я могу передать роль хоста другим участникам вызова, когда хост уходит.
Я использую WebRTC, PeerJS и сокет.ввод-вывод в мое приложение. Ниже показано, как я настроил сервер.
Дайте мне знать, если вам понадобится более подробная информация.
io.on("connection", (socket) =gt; { socket.on("join-room", (roomID, userID, username) =gt; { if (users[roomID]) users[roomID].push({ id: userID, name: username, video: true, audio: true }); else users[roomID] = [{ id: userID, name: username, video: true, audio: true }]; socket.join(roomID); socket.to(roomID).broadcast.emit("user-connected", userID, username); socket.on("message", (message) =gt; { io.in(roomID).emit("message", message, userID, username); }); io.in(roomID).emit("participants", users[roomID]); socket.on("mute-mic", () =gt; { users[roomID].forEach((user) =gt; { if (user.id === userID) return (user.audio = false); }); io.in(roomID).emit("participants", users[roomID]); }); socket.on("unmute-mic", () =gt; { users[roomID].forEach((user) =gt; { if (user.id === userID) return (user.audio = true); }); io.in(roomID).emit("participants", users[roomID]); }); socket.on("stop-video", () =gt; { users[roomID].forEach((user) =gt; { if (user.id === userID) return (user.video = false); }); io.in(roomID).emit("participants", users[roomID]); }); socket.on("play-video", () =gt; { users[roomID].forEach((user) =gt; { if (user.id === userID) return (user.video = true); }); io.in(roomID).emit("participants", users[roomID]); }); socket.on("disconnect", () =gt; { socket.to(roomID).broadcast.emit("user-disconnected", userID, username); users[roomID] = users[roomID].filter((user) =gt; user.id !== userID); if (users[roomID].length === 0) delete users[roomID]; else io.in(roomID).emit("participants", users[roomID]); }); }); });
Комментарии:
1. Сначала вы должны попытаться сами придумать решение, а затем попросить решение конкретной проблемы 🙂
2. Я действительно это делаю. Я просто задаю вопрос здесь, потому что нет темы об этой проблеме, и другие могут захотеть узнать. Я опубликую решение, если разберусь в этом самостоятельно 🙂 Также полезно задать некоторые вопросы другим, поскольку я новичок в этом инструменте.