[mirotalk] - fix remove peer

This commit is contained in:
Miroslav Pejic
2022-07-11 19:35:57 +02:00
parent 8e36fbdd55
commit aa9817cd9e
2 changed files with 16 additions and 13 deletions
+8 -3
View File
@@ -494,7 +494,7 @@ io.sockets.on('connect', async (socket) => {
peer_hand: peer_hand,
peer_rec: peer_rec,
};
log.debug('connected peers grp by roomId', peers);
log.debug('[Join] - connected peers grp by roomId', peers);
await addPeerTo(channel);
@@ -542,16 +542,21 @@ io.sockets.on('connect', async (socket) => {
delete socket.channels[channel];
delete channels[channel][socket.id];
delete peers[channel][socket.id]; // delete peer data from the room
switch (Object.keys(peers[channel]).length) {
case 0: // last peer disconnected from the room without room lock & password set
delete peers[channel];
break;
case 2: // last peer disconnected from the room having room lock & password set
delete peers[channel]; // clean lock and password value from the room
if (peers[channel]['lock'] && peers[channel]['password']) {
delete peers[channel]; // clean lock and password value from the room
}
break;
}
} catch (err) {
log.error('Remove Peer', toJson(err));
}
log.debug('connected peers grp by roomId', peers);
log.debug('[removePeerFrom] - connected peers grp by roomId', peers);
for (let id in channels[channel]) {
await channels[channel][id].emit('removePeer', { peer_id: socket.id });
+8 -10
View File
@@ -88,7 +88,6 @@ let mirotalkTheme = 'dark'; // dark - grey ...
let mirotalkBtnsBar = 'vertical'; // vertical - horizontal
let swalBackground = 'rgba(0, 0, 0, 0.7)'; // black - #16171b - transparent ...
let peerGeo;
let peerConnection;
let myPeerName = getPeerName();
let isScreenEnabled = getScreenEnabled();
let isScreenSharingSupported = false;
@@ -123,7 +122,7 @@ let localMediaStream; // my microphone / webcam
let remoteMediaStream; // peers microphone / webcam
let recScreenStream; // recorded screen stream
let remoteMediaControls = false; // enable - disable peers video player controls (default false)
let peers = {}; // keep track of our peer infos, indexed by peer_id == socket.id
let peerConnection = null; // RTCPeerConnection
let peerConnections = {}; // keep track of our peer connections, indexed by peer_id == socket.io id
let chatDataChannels = {}; // keep track of our peer chat data channels
let fileDataChannels = {}; // keep track of our peer file sharing data channels
@@ -905,7 +904,7 @@ async function handleAddPeer(config) {
// console.log("addPeer", JSON.stringify(config));
let peer_id = config.peer_id;
peers = config.peers;
let peers = config.peers;
let should_create_offer = config.should_create_offer;
let iceServers = config.iceServers;
@@ -1202,7 +1201,6 @@ function handleRemovePeer(config) {
delete fileDataChannels[peer_id];
delete peerConnections[peer_id];
delete peerMediaElements[peer_id];
delete peers[peer_id];
playSound('removePeer');
}
@@ -1689,7 +1687,7 @@ async function loadRemoteMediaStream(stream, peers, peer_id) {
remoteVideoParagraph.setAttribute('id', peer_id + '_name');
remoteVideoParagraph.className = 'videoPeerName';
const peerVideoText = document.createTextNode(peers[peer_id]['peer_name']);
const peerVideoText = document.createTextNode(peer_name);
remoteVideoParagraph.appendChild(peerVideoText);
// remote hand status element
remoteHandStatusIcon.setAttribute('id', peer_id + '_handStatus');
@@ -3382,8 +3380,8 @@ function toggleFullScreen() {
async function refreshMyStreamToPeers(stream, localAudioTrackChange = false) {
if (!thereIsPeerConnections()) return;
console.log('PEERS', peers); // all peers in the room
console.log('PEER-CONNECTIONS', peerConnections); // all peers connections in the room expect myself
// all peers connections in the room expect myself
console.log('PEER-CONNECTIONS', peerConnections);
// refresh my stream to connected peers expect myself
for (let peer_id in peerConnections) {
@@ -3395,14 +3393,14 @@ async function refreshMyStreamToPeers(stream, localAudioTrackChange = false) {
if (videoSender) {
// https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/replaceTrack
videoSender.replaceTrack(stream.getVideoTracks()[0]);
console.log('REPLACE VIDEO TRACK TO', peers[peer_id]);
console.log('REPLACE VIDEO TRACK TO', { peer_id: peer_id });
} else {
stream.getTracks().forEach((track) => {
if (track.kind === 'video') {
// https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addTrack
peerConnections[peer_id].addTrack(track);
handleRtcOffer(peer_id); // https://groups.google.com/g/discuss-webrtc/c/Ky3wf_hg1l8?pli=1
console.log('ADD VIDEO TRACK TO', peers[peer_id]);
console.log('ADD VIDEO TRACK TO', { peer_id: peer_id });
}
});
}
@@ -3416,7 +3414,7 @@ async function refreshMyStreamToPeers(stream, localAudioTrackChange = false) {
if (audioSender) {
// https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/replaceTrack
audioSender.replaceTrack(stream.getAudioTracks()[0]);
console.log('REPLACE AUDIO TRACK TO', peers[peer_id]);
console.log('REPLACE AUDIO TRACK TO', { peer_id: peer_id });
}
}
}