Closing the old peer connection
This commit is contained in:
@@ -135,8 +135,12 @@ export class SmallWebRTCTransport {
|
|||||||
// aiortc it is not working fine when just trying to restart the ice
|
// aiortc it is not working fine when just trying to restart the ice
|
||||||
// so in this case we are creating a new peer connection on both sides
|
// so in this case we are creating a new peer connection on both sides
|
||||||
if (recreatePeerConnection) {
|
if (recreatePeerConnection) {
|
||||||
//this.pc?.close()
|
const oldPC = this.pc
|
||||||
await this.startNewPeerConnection(recreatePeerConnection)
|
await this.startNewPeerConnection(recreatePeerConnection)
|
||||||
|
if (oldPC) {
|
||||||
|
this.log("closing old peer connection")
|
||||||
|
this.closePeerConnection(oldPC)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
await this.negotiate();
|
await this.negotiate();
|
||||||
}
|
}
|
||||||
@@ -356,6 +360,20 @@ export class SmallWebRTCTransport {
|
|||||||
return constraints;
|
return constraints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private closePeerConnection(pc:RTCPeerConnection) {
|
||||||
|
pc.getTransceivers().forEach((transceiver) => {
|
||||||
|
if (transceiver.stop) {
|
||||||
|
transceiver.stop();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
pc.getSenders().forEach((sender) => {
|
||||||
|
sender.track?.stop();
|
||||||
|
});
|
||||||
|
|
||||||
|
pc.close();
|
||||||
|
}
|
||||||
|
|
||||||
stop(): void {
|
stop(): void {
|
||||||
if (!this.pc) {
|
if (!this.pc) {
|
||||||
this.log("Peer connection is already closed or null.");
|
this.log("Peer connection is already closed or null.");
|
||||||
@@ -366,17 +384,7 @@ export class SmallWebRTCTransport {
|
|||||||
this.dc.close();
|
this.dc.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.pc.getTransceivers().forEach((transceiver) => {
|
this.closePeerConnection(this.pc)
|
||||||
if (transceiver.stop) {
|
|
||||||
transceiver.stop();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.pc.getSenders().forEach((sender) => {
|
|
||||||
sender.track?.stop();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.pc.close();
|
|
||||||
|
|
||||||
// For some reason after we close the peer connection, it is not triggering the listeners
|
// For some reason after we close the peer connection, it is not triggering the listeners
|
||||||
this.pc_id = null
|
this.pc_id = null
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ class SmallWebRTCClient:
|
|||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
if self._webrtcConnection.is_connected():
|
if self._webrtcConnection.is_connected():
|
||||||
logger.warning("Timeout: No video frame received within the specified time.")
|
logger.warning("Timeout: No video frame received within the specified time.")
|
||||||
self._webrtcConnection.ask_to_renegotiate()
|
# self._webrtcConnection.ask_to_renegotiate()
|
||||||
frame = None
|
frame = None
|
||||||
except MediaStreamError:
|
except MediaStreamError:
|
||||||
logger.warning("Received an unexpected media stream error while reading the audio.")
|
logger.warning("Received an unexpected media stream error while reading the audio.")
|
||||||
|
|||||||
Reference in New Issue
Block a user