diff --git a/app/src/Peer.js b/app/src/Peer.js index a83475d1..765ac5c5 100644 --- a/app/src/Peer.js +++ b/app/src/Peer.js @@ -71,6 +71,10 @@ module.exports = class Peer { // TRANSPORT // #################################################### + getTransports() { + return JSON.parse(JSON.stringify([...this.transports])); + } + addTransport(transport) { this.transports.set(transport.id, transport); } @@ -95,6 +99,10 @@ module.exports = class Peer { // PRODUCER // #################################################### + getProducers() { + return JSON.parse(JSON.stringify([...this.producers])); + } + getProducer(producer_id) { return this.producers.get(producer_id); } @@ -161,12 +169,17 @@ module.exports = class Peer { log.warn('Close Producer', error.message); } this.producers.delete(producer_id); + log.debug('Producer closed and deleted', { producer_id }); } // #################################################### // CONSUMER // #################################################### + getConsumers() { + return JSON.parse(JSON.stringify([...this.consumers])); + } + async createConsumer(consumer_transport_id, producer_id, rtpCapabilities) { try { const consumerTransport = this.transports.get(consumer_transport_id); @@ -234,7 +247,13 @@ module.exports = class Peer { removeConsumer(consumer_id) { if (this.consumers.has(consumer_id)) { + try { + this.consumers.get(consumer_id).close(); + } catch (error) { + log.warn('Close Consumer', error.message); + } this.consumers.delete(consumer_id); + log.debug('Consumer closed and deleted', { consumer_id }); } } }; diff --git a/app/src/Room.js b/app/src/Room.js index cfa31fdc..321e4d19 100644 --- a/app/src/Room.js +++ b/app/src/Room.js @@ -218,7 +218,22 @@ module.exports = class Room { async removePeer(socket_id) { if (!this.peers.has(socket_id)) return; - this.peers.get(socket_id).close(); + + const peer = this.peers.get(socket_id); + + const peerTransports = peer.getTransports(); + const peerProducers = peer.getProducers(); + const peerConsumers = peer.getConsumers(); + + log.debug('REMOVE PEER', { + id: peer.id, + peerTransports: peerTransports, + peerProducers: peerProducers, + peerConsumers: peerConsumers, + }); + + peer.close(); + this.peers.delete(socket_id); } @@ -269,8 +284,6 @@ module.exports = class Room { iceState: iceState, }); transport.close(); - //this.router.close(); - //peer.close(); } }); @@ -288,13 +301,11 @@ module.exports = class Room { dtlsState: dtlsState, }); transport.close(); - //this.router.close(); - //peer.close(); } }); - transport.on('close', () => { - log.debug('Transport closed', { peer_name: peer_name }); + transport.observer.on('close', () => { + log.debug('Transport closed', { peer_name: peer_name, transport_id: transport.id }); }); log.debug('Adding transport', { transportId: id });