Skip to content

Commit

Permalink
[mirotalk] - fix remove peer
Browse files Browse the repository at this point in the history
  • Loading branch information
miroslavpejic85 committed Jul 11, 2022
1 parent 8e36fbd commit aa9817c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
11 changes: 8 additions & 3 deletions app/src/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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 });
Expand Down
18 changes: 8 additions & 10 deletions public/js/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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');
}
Expand Down Expand Up @@ -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');
Expand Down Expand Up @@ -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) {
Expand All @@ -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 });
}
});
}
Expand All @@ -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 });
}
}
}
Expand Down

0 comments on commit aa9817c

Please sign in to comment.