Trigger reconnect on Publisher PC disconnect also (#105)
* impl * clean up _hasPublished
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user