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].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);
@ -323,6 +325,27 @@ const MediaAgent = ({setPeers}) => {
}
}, [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(() => {
if (!name) {
return;
@ -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);