From 224afacc2ce74c2cd0bba9ef2ace4934a29c1267 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 23 Aug 2024 11:53:23 +0800 Subject: [PATCH] bugfix --- bricks/rtc.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bricks/rtc.js b/bricks/rtc.js index 9fe7aad..4f0eb91 100644 --- a/bricks/rtc.js +++ b/bricks/rtc.js @@ -152,7 +152,7 @@ bricks.RTCClient = class extends bricks.VBox { async send_offer(){ var offer = await this.pc.createOffer(); await this.pc.setLocalDescription(offer); - console.log('offer =', offer, this.pc.localDescription); + console.log('########send_offer =', offer, this.pc.localDescription); this.socket.send(JSON.stringify({ type:'offer', offer:this.pc.localDescription, @@ -190,6 +190,7 @@ bricks.RTCClient = class extends bricks.VBox { })); } async call_close(active){ + this.role = null; this.pc.onicecandidate = null; this.pc.ontrack = null; this.pc.close(); @@ -241,16 +242,19 @@ bricks.RTCClient = class extends bricks.VBox { await this.pc.setRemoteDescription(offer); var answer = await this.pc.createAnswer(); await this.pc.setLocalDescription(answer); - console.log('answer=', answer, 'desc=', this.pc.localDescription); + console.log('###### send_answer=', answer, 'desc=', this.pc.localDescription); this.socket.send(JSON.stringify({ type:'answer', answer:this.pc.localDescription, to:this.peer_info })); console.log('offer branch exe'); + if (this.role == 'responser'){ + this.send_offer(); + } break; case 'answer': - console.log('answer: d.from=', d.from, 'peer_info=', this.peer_info); + console.log('#### receive_answer: d.from=', d.from, 'peer_info=', this.peer_info); if (d.from.id == this.peer_info.id){ var desc = new RTCSessionDescription(d.answer); await this.pc.setRemoteDescription(desc); @@ -321,18 +325,14 @@ bricks.RTCClient = class extends bricks.VBox { this.pc.ontrack = event => { this.remoteVideo.set_stream(event.streams[0]); }; - - await this.send_offer(); + if (this.role == 'requester'){ + await this.send_offer(); + } console.log('createPeerConnection() finished'); } async ice_statechange(event){ console.log(`oniceconnectionstatechange, pc.iceConnectionState is ${this.pc.iceConnectionState}.`); - if (this.pc.iceConnectionState === 'disconnected'){ - if (this.role == 'requester'){ - await this.send_offer(); - } - } } async connection_statechange(event){ console.log(`onconnectionstatechange, pc.connectionState is ${this.pc.connectionState}.`);