1
0

Re-establish local media stream when connection comes back

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-03-16 09:45:03 -07:00
parent c71322af42
commit 42c58c5b44

View File

@ -298,6 +298,7 @@ const MediaAgent = ({setPeers}) => {
peers[id].dead = true; peers[id].dead = true;
peers[id].connection = undefined; peers[id].connection = undefined;
} }
if (debug) console.log(`media-agent - close`, peers); if (debug) console.log(`media-agent - close`, peers);
setPeers(Object.assign({}, peers)); setPeers(Object.assign({}, peers));
} }
@ -313,6 +314,7 @@ const MediaAgent = ({setPeers}) => {
if (!ws) { if (!ws) {
return; return;
} }
console.log(`media-control - Binding to WebSocket`);
const cbMessage = e => refWsMessage.current(e); const cbMessage = e => refWsMessage.current(e);
ws.addEventListener('message', cbMessage); ws.addEventListener('message', cbMessage);
const cbClose = e => refWsClose.current(e); const cbClose = e => refWsClose.current(e);
@ -322,6 +324,27 @@ const MediaAgent = ({setPeers}) => {
ws.removeEventListener('close', cbClose); ws.removeEventListener('close', cbClose);
} }
}, [ws, refWsMessage, refWsClose ]); }, [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 <MediaControl> will trigger */
peers[peer] = Object.assign({}, peers[peer]);
delete peers[peer].dead;
setPeers(Object.assign({}, peers));
}
}
join();
}
}, [ws, stream, peers, setPeers]);
useEffect(() => { useEffect(() => {
if (!name) { if (!name) {
@ -396,10 +419,6 @@ const MediaAgent = ({setPeers}) => {
}); });
}; };
const join = () => {
sendMessage({ type: 'join' });
}
let abort = false; let abort = false;
if (!stream) { if (!stream) {
if (debug) console.log(`media-agent - WebSocket open request. Attempting to create local media.`); 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`); console.log(`media-agent - aborting setting local media`);
} else { } else {
setStream(media); setStream(media);
join();
} }
}).catch((error) => { /* user denied access to a/v */ }).catch((error) => { /* user denied access to a/v */
console.error(error); console.error(error);