diff --git a/client/src/MediaControl.js b/client/src/MediaControl.js index 6946bf5..903845a 100644 --- a/client/src/MediaControl.js +++ b/client/src/MediaControl.js @@ -298,6 +298,7 @@ const MediaAgent = ({setPeers}) => { peers[id].dead = true; peers[id].connection = undefined; } + if (debug) console.log(`media-agent - close`, peers); setPeers(Object.assign({}, peers)); } @@ -313,6 +314,7 @@ const MediaAgent = ({setPeers}) => { if (!ws) { return; } + console.log(`media-control - Binding to WebSocket`); const cbMessage = e => refWsMessage.current(e); ws.addEventListener('message', cbMessage); const cbClose = e => refWsClose.current(e); @@ -322,6 +324,27 @@ const MediaAgent = ({setPeers}) => { ws.removeEventListener('close', cbClose); } }, [ws, refWsMessage, refWsClose ]); + + useEffect(() => { + console.log(`media-control - WebSocket or Stream changed`); + + const join = () => { + sendMessage({ type: 'join' }); + } + + if (ws && stream) { + console.log(`media-conterol - issuing join request`); + for (let peer in peers) { + if (peers[peer].local && peers[peer].dead) { + /* Allocate a new Object so will trigger */ + peers[peer] = Object.assign({}, peers[peer]); + delete peers[peer].dead; + setPeers(Object.assign({}, peers)); + } + } + join(); + } + }, [ws, stream, peers, setPeers]); useEffect(() => { if (!name) { @@ -396,10 +419,6 @@ const MediaAgent = ({setPeers}) => { }); }; - const join = () => { - sendMessage({ type: 'join' }); - } - let abort = false; if (!stream) { if (debug) console.log(`media-agent - WebSocket open request. Attempting to create local media.`); @@ -410,7 +429,6 @@ const MediaAgent = ({setPeers}) => { console.log(`media-agent - aborting setting local media`); } else { setStream(media); - join(); } }).catch((error) => { /* user denied access to a/v */ console.error(error);