Re-establish local media stream when connection comes back
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
c71322af42
commit
42c58c5b44
@ -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 <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) {
|
||||
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user