Trigger reconnect on Publisher PC disconnect also (#105)

* impl

* clean up _hasPublished
This commit is contained in:
Hiroshi Horie
2022-04-09 01:34:26 +09:00
committed by GitHub
parent 84b9ef130f
commit 5d6e304e40
2 changed files with 10 additions and 4 deletions
+5 -4
View File
@@ -139,6 +139,7 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
await publisher?.dispose();
publisher = null;
_hasPublished = false;
await subscriber?.dispose();
subscriber = null;
@@ -367,11 +368,11 @@ class Engine extends Disposable with EventsEmittable<EngineEvent> {
));
events.on<EnginePeerStateUpdatedEvent>((event) {
// only listen to primary ice events
if (!event.isPrimary) return;
//
final isPrimaryOrPublisher = event.isPrimary ||
(_hasPublished && event is EnginePublisherPeerStateUpdatedEvent);
if (event.state ==
rtc.RTCPeerConnectionState.RTCPeerConnectionStateFailed) {
if (isPrimaryOrPublisher && event.state.isDisconnectedOrFailed()) {
// trigger reconnect sequence
_onDisconnected(DisconnectReason.peerConnection);
}
+5
View File
@@ -77,6 +77,11 @@ extension RTCIceCandidateExt on rtc.RTCIceCandidate {
extension RTCPeerConnectionStateExt on rtc.RTCPeerConnectionState {
bool isConnected() =>
this == rtc.RTCPeerConnectionState.RTCPeerConnectionStateConnected;
bool isDisconnectedOrFailed() => [
rtc.RTCPeerConnectionState.RTCPeerConnectionStateDisconnected,
rtc.RTCPeerConnectionState.RTCPeerConnectionStateFailed,
].contains(this);
}
extension RTCIceTransportPolicyExt on RTCIceTransportPolicy {