diff --git a/bricks/rtc.js b/bricks/rtc.js index 89562a1..62b4626 100644 --- a/bricks/rtc.js +++ b/bricks/rtc.js @@ -330,6 +330,7 @@ bricks.RTCP2PConnect = class { console.log(`${peer.id} state changed. new state=${pc.connectionState}`); console.log('state=', pc.connectionState, typeof(pc.connectionState)); if (pc.connectionState == 'disconnected'){ + this.peer_close(peer); if (this.opts.on_pc_disconnected){ this.opts.on_pc_disconnected(peer); } @@ -338,6 +339,9 @@ bricks.RTCP2PConnect = class { if (pc.connectionState == 'connected'){ console.log('state is connected, data_connect=', this.opts.data_connect); + if(this.opts.on_pc_connected){ + this.opts.on_pc_connected(peer); + } } } @@ -379,9 +383,6 @@ bricks.RTCP2PConnect = class { this.peers[peer.id].dc = pc.createDataChannel('chat', {ordered:true}); var dc = this.peers[peer.id].dc; await this.dc_created(peer, this.peers[peer.id].dc); - if(this.opts.on_pc_connected){ - this.opts.on_pc_connected(peer); - } console.log('dc created', this.peers[peer.id].dc); } async createPeerConnection(peer){ @@ -460,6 +461,12 @@ bricks.RTCP2PConnect = class { } pc.close(); delete self.peers[peer.id]; + var keys = Object.keys(self.peers); + if (keys.length == 0){ + this.localVideo.srcObject.getTracks().forEach(track => track.stop()); + this.local_stream.getTracks().forEach(track => track.stop()); + this.local_screan.getTracks().forEach(track => track.stop()); + } } };