@observertc/observer-js 1.0.1-b52220e.0 → 1.0.1-c2558cc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ObservedCall.d.ts +2 -0
- package/lib/ObservedCall.d.ts.map +1 -1
- package/lib/ObservedCall.js +4 -0
- package/lib/ObservedCallEventMonitor.d.ts +104 -0
- package/lib/ObservedCallEventMonitor.d.ts.map +1 -0
- package/lib/ObservedCallEventMonitor.js +314 -0
- package/lib/ObservedClient.d.ts +2 -2
- package/lib/ObservedClient.d.ts.map +1 -1
- package/lib/ObservedClient.js +52 -4
- package/lib/ObservedIceCandidatePair.d.ts +2 -1
- package/lib/ObservedIceCandidatePair.d.ts.map +1 -1
- package/lib/ObservedIceCandidatePair.js +17 -1
- package/lib/ObservedInboundTrack.d.ts +1 -0
- package/lib/ObservedInboundTrack.d.ts.map +1 -1
- package/lib/ObservedInboundTrack.js +1 -0
- package/lib/ObservedOutboundTrack.d.ts +1 -0
- package/lib/ObservedOutboundTrack.d.ts.map +1 -1
- package/lib/ObservedOutboundTrack.js +1 -0
- package/lib/ObservedPeerConnection.d.ts +19 -0
- package/lib/ObservedPeerConnection.d.ts.map +1 -1
- package/lib/ObservedPeerConnection.js +75 -15
- package/lib/Observer.d.ts +8 -4
- package/lib/Observer.d.ts.map +1 -1
- package/lib/Observer.js +14 -2
- package/lib/ObserverEventMonitor.d.ts +138 -0
- package/lib/ObserverEventMonitor.d.ts.map +1 -0
- package/lib/ObserverEventMonitor.js +433 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/schema/ClientSample.d.ts +1 -1
- package/lib/schema/ClientSample.d.ts.map +1 -1
- package/lib/updaters/{OnAllCallObserverUpdater_.d.ts → OnAllCallObserverUpdater.d.ts} +3 -1
- package/lib/updaters/OnAllCallObserverUpdater.d.ts.map +1 -0
- package/lib/updaters/{OnAllCallObserverUpdater_.js → OnAllCallObserverUpdater.js} +13 -1
- package/lib/updaters/OnAllClientCallUpdater.d.ts +2 -0
- package/lib/updaters/OnAllClientCallUpdater.d.ts.map +1 -1
- package/lib/updaters/OnAllClientCallUpdater.js +16 -0
- package/lib/updaters/{OnAnyCallObserverUpdater_.d.ts → OnAnyCallObserverUpdater.d.ts} +2 -1
- package/lib/updaters/OnAnyCallObserverUpdater.d.ts.map +1 -0
- package/lib/updaters/{OnAnyCallObserverUpdater_.js → OnAnyCallObserverUpdater.js} +11 -1
- package/lib/updaters/OnAnyClientCallUpdater.d.ts +1 -0
- package/lib/updaters/OnAnyClientCallUpdater.d.ts.map +1 -1
- package/lib/updaters/OnAnyClientCallUpdater.js +11 -2
- package/lib/utils/MediasoupRemoteTrackResolver.d.ts +25 -0
- package/lib/utils/MediasoupRemoteTrackResolver.d.ts.map +1 -0
- package/lib/utils/MediasoupRemoteTrackResolver.js +110 -0
- package/package.json +1 -1
- package/src/ObservedCall.ts +5 -0
- package/src/ObservedCallEventMonitor.ts +392 -0
- package/src/ObservedClient.ts +53 -7
- package/src/ObservedIceCandidatePair.ts +18 -2
- package/src/ObservedInboundTrack.ts +2 -0
- package/src/ObservedOutboundTrack.ts +2 -0
- package/src/ObservedPeerConnection.ts +95 -30
- package/src/Observer.ts +21 -6
- package/src/ObserverEventMonitor.ts +551 -0
- package/src/index.ts +2 -2
- package/src/schema/ClientSample.ts +1 -1
- package/src/updaters/{OnAllCallObserverUpdater_.ts → OnAllCallObserverUpdater.ts} +14 -1
- package/src/updaters/OnAllClientCallUpdater.ts +15 -0
- package/src/updaters/{OnAnyCallObserverUpdater_.ts → OnAnyCallObserverUpdater.ts} +12 -3
- package/src/updaters/OnAnyClientCallUpdater.ts +9 -2
- package/src/utils/MediasoupRemoteTrackResolver.ts +155 -0
- package/lib/updaters/OnAllCallObserverUpdater_.d.ts.map +0 -1
- package/lib/updaters/OnAnyCallObserverUpdater_.d.ts.map +0 -1
|
@@ -72,6 +72,26 @@ export type ObservedPeerConnectionEvents = {
|
|
|
72
72
|
'removed-peer-connection-transport': [ObservedPeerConnectionTransport];
|
|
73
73
|
'removed-remote-inbound-rtp': [ObservedRemoteInboundRtp];
|
|
74
74
|
'removed-remote-outbound-rtp': [ObservedRemoteOutboundRtp];
|
|
75
|
+
'updated-inbound-rtp': [ObservedInboundRtp];
|
|
76
|
+
'updated-outbound-rtp': [ObservedOutboundRtp];
|
|
77
|
+
'updated-inbound-track': [ObservedInboundTrack];
|
|
78
|
+
'updated-outbound-track': [ObservedOutboundTrack];
|
|
79
|
+
'updated-ice-candidate-pair': [ObservedIceCandidatePair];
|
|
80
|
+
'updated-ice-transport': [ObservedIceTransport];
|
|
81
|
+
'updated-peer-connection-transport': [ObservedPeerConnectionTransport];
|
|
82
|
+
'updated-media-source': [ObservedMediaSource];
|
|
83
|
+
'updated-media-playout': [ObservedMediaPlayout];
|
|
84
|
+
'updated-data-channel': [ObservedDataChannel];
|
|
85
|
+
'updated-ice-candidate': [ObservedIceCandidate];
|
|
86
|
+
'updated-certificate': [ObservedCertificate];
|
|
87
|
+
'updated-codec': [ObservedCodec];
|
|
88
|
+
'updated-remote-inbound-rtp': [ObservedRemoteInboundRtp];
|
|
89
|
+
'updated-remote-outbound-rtp': [ObservedRemoteOutboundRtp];
|
|
90
|
+
'muted-inbound-track': [ObservedInboundTrack];
|
|
91
|
+
'muted-outbound-track': [ObservedOutboundTrack];
|
|
92
|
+
'unmuted-inbound-track': [ObservedInboundTrack];
|
|
93
|
+
'unmuted-outbound-track': [ObservedOutboundTrack];
|
|
94
|
+
|
|
75
95
|
'update': [],
|
|
76
96
|
close: [];
|
|
77
97
|
};
|
|
@@ -644,12 +664,15 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
644
664
|
|
|
645
665
|
observedCertificate = new ObservedCertificate(stats.timestamp, stats.id, this);
|
|
646
666
|
|
|
667
|
+
observedCertificate.update(stats);
|
|
668
|
+
|
|
647
669
|
this.observedCertificates.set(stats.id, observedCertificate);
|
|
648
670
|
this.emit('added-certificate', observedCertificate);
|
|
671
|
+
} else {
|
|
672
|
+
observedCertificate.update(stats);
|
|
673
|
+
this.emit('updated-certificate', observedCertificate);
|
|
649
674
|
}
|
|
650
675
|
|
|
651
|
-
observedCertificate.update(stats);
|
|
652
|
-
|
|
653
676
|
return observedCertificate;
|
|
654
677
|
}
|
|
655
678
|
|
|
@@ -666,11 +689,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
666
689
|
|
|
667
690
|
observedCodec = new ObservedCodec(stats.timestamp, stats.id, stats.mimeType, this);
|
|
668
691
|
|
|
692
|
+
observedCodec.update(stats);
|
|
693
|
+
|
|
669
694
|
this.observedCodecs.set(stats.id, observedCodec);
|
|
670
695
|
this.emit('added-codec', observedCodec);
|
|
696
|
+
} else {
|
|
697
|
+
observedCodec.update(stats);
|
|
671
698
|
}
|
|
672
|
-
|
|
673
|
-
observedCodec.update(stats);
|
|
699
|
+
this.emit('updated-codec', observedCodec);
|
|
674
700
|
|
|
675
701
|
return observedCodec;
|
|
676
702
|
}
|
|
@@ -688,11 +714,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
688
714
|
|
|
689
715
|
observedDataChannel = new ObservedDataChannel(stats.timestamp, stats.id, this);
|
|
690
716
|
|
|
717
|
+
observedDataChannel.update(stats);
|
|
718
|
+
|
|
691
719
|
this.observedDataChannels.set(stats.id, observedDataChannel);
|
|
692
720
|
this.emit('added-data-channel', observedDataChannel);
|
|
721
|
+
} else {
|
|
722
|
+
observedDataChannel.update(stats);
|
|
693
723
|
}
|
|
694
|
-
|
|
695
|
-
observedDataChannel.update(stats);
|
|
724
|
+
this.emit('updated-data-channel', observedDataChannel);
|
|
696
725
|
|
|
697
726
|
return observedDataChannel;
|
|
698
727
|
}
|
|
@@ -710,11 +739,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
710
739
|
|
|
711
740
|
observedIceCandidate = new ObservedIceCandidate(stats.timestamp, stats.id, this);
|
|
712
741
|
|
|
742
|
+
observedIceCandidate.update(stats);
|
|
743
|
+
|
|
713
744
|
this.observedIceCandidates.set(stats.id, observedIceCandidate);
|
|
714
745
|
this.emit('added-ice-candidate', observedIceCandidate);
|
|
746
|
+
} else {
|
|
747
|
+
observedIceCandidate.update(stats);
|
|
715
748
|
}
|
|
716
|
-
|
|
717
|
-
observedIceCandidate.update(stats);
|
|
749
|
+
this.emit('updated-ice-candidate', observedIceCandidate);
|
|
718
750
|
|
|
719
751
|
return observedIceCandidate;
|
|
720
752
|
}
|
|
@@ -732,11 +764,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
732
764
|
|
|
733
765
|
observedIceCandidatePair = new ObservedIceCandidatePair(stats.timestamp, stats.id, this);
|
|
734
766
|
|
|
767
|
+
observedIceCandidatePair.update(stats);
|
|
768
|
+
|
|
735
769
|
this.observedIceCandidatesPair.set(stats.id, observedIceCandidatePair);
|
|
736
770
|
this.emit('added-ice-candidate-pair', observedIceCandidatePair);
|
|
771
|
+
} else {
|
|
772
|
+
observedIceCandidatePair.update(stats);
|
|
737
773
|
}
|
|
738
|
-
|
|
739
|
-
observedIceCandidatePair.update(stats);
|
|
774
|
+
this.emit('updated-ice-candidate-pair', observedIceCandidatePair);
|
|
740
775
|
|
|
741
776
|
return observedIceCandidatePair;
|
|
742
777
|
}
|
|
@@ -754,11 +789,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
754
789
|
|
|
755
790
|
observedIceTransport = new ObservedIceTransport(stats.timestamp, stats.id, this);
|
|
756
791
|
|
|
792
|
+
observedIceTransport.update(stats);
|
|
793
|
+
|
|
757
794
|
this.observedIceTransports.set(stats.id, observedIceTransport);
|
|
758
795
|
this.emit('added-ice-transport', observedIceTransport);
|
|
796
|
+
} else {
|
|
797
|
+
observedIceTransport.update(stats);
|
|
759
798
|
}
|
|
760
|
-
|
|
761
|
-
observedIceTransport.update(stats);
|
|
799
|
+
this.emit('updated-ice-transport', observedIceTransport);
|
|
762
800
|
|
|
763
801
|
return observedIceTransport;
|
|
764
802
|
}
|
|
@@ -782,12 +820,15 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
782
820
|
stats.trackIdentifier,
|
|
783
821
|
this
|
|
784
822
|
);
|
|
823
|
+
|
|
824
|
+
observedInboundRtp.update(stats);
|
|
785
825
|
|
|
786
826
|
this.observedInboundRtps.set(stats.ssrc, observedInboundRtp);
|
|
787
827
|
this.emit('added-inbound-rtp', observedInboundRtp);
|
|
828
|
+
} else {
|
|
829
|
+
observedInboundRtp.update(stats);
|
|
788
830
|
}
|
|
789
|
-
|
|
790
|
-
observedInboundRtp.update(stats);
|
|
831
|
+
this.emit('updated-inbound-rtp', observedInboundRtp);
|
|
791
832
|
|
|
792
833
|
return observedInboundRtp;
|
|
793
834
|
}
|
|
@@ -816,11 +857,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
816
857
|
mediaPlayout,
|
|
817
858
|
);
|
|
818
859
|
|
|
860
|
+
observedInboundTrack.update(stats);
|
|
861
|
+
|
|
819
862
|
this.observedInboundTracks.set(stats.id, observedInboundTrack);
|
|
820
863
|
this.emit('added-inbound-track', observedInboundTrack);
|
|
864
|
+
} else {
|
|
865
|
+
observedInboundTrack.update(stats);
|
|
821
866
|
}
|
|
822
|
-
|
|
823
|
-
observedInboundTrack.update(stats);
|
|
867
|
+
this.emit('updated-inbound-track', observedInboundTrack);
|
|
824
868
|
|
|
825
869
|
return observedInboundTrack;
|
|
826
870
|
}
|
|
@@ -843,11 +887,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
843
887
|
this
|
|
844
888
|
);
|
|
845
889
|
|
|
890
|
+
observedMediaPlayout.update(stats);
|
|
891
|
+
|
|
846
892
|
this.observedMediaPlayouts.set(stats.id, observedMediaPlayout);
|
|
847
893
|
this.emit('added-media-playout', observedMediaPlayout);
|
|
894
|
+
} else {
|
|
895
|
+
observedMediaPlayout.update(stats);
|
|
848
896
|
}
|
|
849
|
-
|
|
850
|
-
observedMediaPlayout.update(stats);
|
|
897
|
+
this.emit('updated-media-playout', observedMediaPlayout);
|
|
851
898
|
|
|
852
899
|
return observedMediaPlayout;
|
|
853
900
|
}
|
|
@@ -870,11 +917,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
870
917
|
this
|
|
871
918
|
);
|
|
872
919
|
|
|
920
|
+
observedMediaSource.update(stats);
|
|
921
|
+
|
|
873
922
|
this.observedMediaSources.set(stats.id, observedMediaSource);
|
|
874
923
|
this.emit('added-media-source', observedMediaSource);
|
|
924
|
+
} else {
|
|
925
|
+
observedMediaSource.update(stats);
|
|
875
926
|
}
|
|
876
|
-
|
|
877
|
-
observedMediaSource.update(stats);
|
|
927
|
+
this.emit('updated-media-source', observedMediaSource);
|
|
878
928
|
|
|
879
929
|
return observedMediaSource;
|
|
880
930
|
}
|
|
@@ -898,11 +948,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
898
948
|
this
|
|
899
949
|
);
|
|
900
950
|
|
|
951
|
+
observedOutboundRtp.update(stats);
|
|
952
|
+
|
|
901
953
|
this.observedOutboundRtps.set(stats.ssrc, observedOutboundRtp);
|
|
902
954
|
this.emit('added-outbound-rtp', observedOutboundRtp);
|
|
955
|
+
} else {
|
|
956
|
+
observedOutboundRtp.update(stats);
|
|
903
957
|
}
|
|
904
|
-
|
|
905
|
-
observedOutboundRtp.update(stats);
|
|
958
|
+
this.emit('updated-outbound-rtp', observedOutboundRtp);
|
|
906
959
|
|
|
907
960
|
return observedOutboundRtp;
|
|
908
961
|
}
|
|
@@ -930,11 +983,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
930
983
|
observedMediaSource,
|
|
931
984
|
);
|
|
932
985
|
|
|
986
|
+
observedOutboundTrack.update(stats);
|
|
987
|
+
|
|
933
988
|
this.observedOutboundTracks.set(stats.id, observedOutboundTrack);
|
|
934
989
|
this.emit('added-outbound-track', observedOutboundTrack);
|
|
990
|
+
} else {
|
|
991
|
+
observedOutboundTrack.update(stats);
|
|
935
992
|
}
|
|
936
|
-
|
|
937
|
-
observedOutboundTrack.update(stats);
|
|
993
|
+
this.emit('updated-outbound-track', observedOutboundTrack);
|
|
938
994
|
|
|
939
995
|
return observedOutboundTrack;
|
|
940
996
|
}
|
|
@@ -952,11 +1008,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
952
1008
|
|
|
953
1009
|
observedPeerConnectionTransport = new ObservedPeerConnectionTransport(stats.timestamp, stats.id, this);
|
|
954
1010
|
|
|
1011
|
+
observedPeerConnectionTransport.update(stats);
|
|
1012
|
+
|
|
955
1013
|
this.observedPeerConnectionTransports.set(stats.id, observedPeerConnectionTransport);
|
|
956
1014
|
this.emit('added-peer-connection-transport', observedPeerConnectionTransport);
|
|
1015
|
+
} else {
|
|
1016
|
+
observedPeerConnectionTransport.update(stats);
|
|
957
1017
|
}
|
|
958
|
-
|
|
959
|
-
observedPeerConnectionTransport.update(stats);
|
|
1018
|
+
this.emit('updated-peer-connection-transport', observedPeerConnectionTransport);
|
|
960
1019
|
|
|
961
1020
|
return observedPeerConnectionTransport;
|
|
962
1021
|
}
|
|
@@ -980,11 +1039,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
980
1039
|
this
|
|
981
1040
|
);
|
|
982
1041
|
|
|
1042
|
+
observedRemoteInboundRtp.update(stats);
|
|
1043
|
+
|
|
983
1044
|
this.observedRemoteInboundRtps.set(stats.ssrc, observedRemoteInboundRtp);
|
|
984
1045
|
this.emit('added-remote-inbound-rtp', observedRemoteInboundRtp);
|
|
1046
|
+
} else {
|
|
1047
|
+
observedRemoteInboundRtp.update(stats);
|
|
985
1048
|
}
|
|
986
|
-
|
|
987
|
-
observedRemoteInboundRtp.update(stats);
|
|
1049
|
+
this.emit('updated-remote-inbound-rtp', observedRemoteInboundRtp);
|
|
988
1050
|
|
|
989
1051
|
return observedRemoteInboundRtp;
|
|
990
1052
|
}
|
|
@@ -1008,11 +1070,14 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
1008
1070
|
this
|
|
1009
1071
|
);
|
|
1010
1072
|
|
|
1073
|
+
observedRemoteOutboundRtp.update(stats);
|
|
1074
|
+
|
|
1011
1075
|
this.observedRemoteOutboundRtps.set(stats.ssrc, observedRemoteOutboundRtp);
|
|
1012
1076
|
this.emit('added-remote-outbound-rtp', observedRemoteOutboundRtp);
|
|
1077
|
+
} else {
|
|
1078
|
+
observedRemoteOutboundRtp.update(stats);
|
|
1013
1079
|
}
|
|
1014
|
-
|
|
1015
|
-
observedRemoteOutboundRtp.update(stats);
|
|
1080
|
+
this.emit('updated-remote-outbound-rtp', observedRemoteOutboundRtp);
|
|
1016
1081
|
|
|
1017
1082
|
return observedRemoteOutboundRtp;
|
|
1018
1083
|
}
|
package/src/Observer.ts
CHANGED
|
@@ -7,8 +7,10 @@ import { ObservedTURN } from './ObservedTURN';
|
|
|
7
7
|
import { Detectors } from './detectors/Detectors';
|
|
8
8
|
import { Updater } from './updaters/Updater';
|
|
9
9
|
import { OnIntervalUpdater } from './updaters/OnIntervalUpdater';
|
|
10
|
-
import { OnAllCallObserverUpdater } from './updaters/
|
|
11
|
-
import { OnAnyCallObserverUpdater } from './updaters/
|
|
10
|
+
import { OnAllCallObserverUpdater } from './updaters/OnAllCallObserverUpdater';
|
|
11
|
+
import { OnAnyCallObserverUpdater } from './updaters/OnAnyCallObserverUpdater';
|
|
12
|
+
import { ObserverEventMonitor } from './ObserverEventMonitor';
|
|
13
|
+
import { MediasoupRemoteTrackResolver } from './utils/MediasoupRemoteTrackResolver';
|
|
12
14
|
|
|
13
15
|
const logger = createLogger('Observer');
|
|
14
16
|
|
|
@@ -23,11 +25,12 @@ export type ObserverEvents = {
|
|
|
23
25
|
'close': [],
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
export type ObserverConfig = {
|
|
28
|
+
export type ObserverConfig<AppData extends Record<string, unknown> = Record<string, unknown>> = {
|
|
27
29
|
updatePolicy?: 'update-on-any-call-updated' | 'update-when-all-call-updated' | 'update-on-interval',
|
|
28
30
|
updateIntervalInMs?: number,
|
|
29
31
|
defaultCallUpdatePolicy?: ObservedCallSettings['updatePolicy'],
|
|
30
32
|
defaultCallUpdateIntervalInMs?: number,
|
|
33
|
+
appData?: AppData,
|
|
31
34
|
}
|
|
32
35
|
|
|
33
36
|
export declare interface Observer {
|
|
@@ -37,7 +40,7 @@ export declare interface Observer {
|
|
|
37
40
|
emit<U extends keyof ObserverEvents>(event: U, ...args: ObserverEvents[U]): boolean;
|
|
38
41
|
}
|
|
39
42
|
|
|
40
|
-
export class Observer extends EventEmitter {
|
|
43
|
+
export class Observer<AppData extends Record<string, unknown> = Record<string, unknown>> extends EventEmitter {
|
|
41
44
|
public readonly detectors: Detectors;
|
|
42
45
|
|
|
43
46
|
public readonly observedTURN = new ObservedTURN();
|
|
@@ -67,9 +70,10 @@ export class Observer extends EventEmitter {
|
|
|
67
70
|
|
|
68
71
|
private _timer?: ReturnType<typeof setInterval>;
|
|
69
72
|
|
|
70
|
-
public constructor(public readonly config: ObserverConfig = {
|
|
73
|
+
public constructor(public readonly config: ObserverConfig<AppData> = {
|
|
71
74
|
updatePolicy: 'update-when-all-call-updated',
|
|
72
75
|
updateIntervalInMs: undefined,
|
|
76
|
+
appData: {} as AppData,
|
|
73
77
|
}) {
|
|
74
78
|
super();
|
|
75
79
|
this.setMaxListeners(Infinity);
|
|
@@ -108,6 +112,10 @@ export class Observer extends EventEmitter {
|
|
|
108
112
|
this.detectors = new Detectors();
|
|
109
113
|
}
|
|
110
114
|
|
|
115
|
+
public get appData() {
|
|
116
|
+
return this.config.appData;
|
|
117
|
+
}
|
|
118
|
+
|
|
111
119
|
public getObservedCall<T extends Record<string, unknown> = Record<string, unknown>>(callId: string): ObservedCall<T> | undefined {
|
|
112
120
|
if (this.closed || !this.observedCalls.has(callId)) return;
|
|
113
121
|
|
|
@@ -124,12 +132,15 @@ export class Observer extends EventEmitter {
|
|
|
124
132
|
settings.updatePolicy = this.config.defaultCallUpdatePolicy;
|
|
125
133
|
settings.updateIntervalInMs = this.config.defaultCallUpdateIntervalInMs;
|
|
126
134
|
}
|
|
127
|
-
|
|
128
135
|
const observedCall = new ObservedCall(settings, this);
|
|
129
136
|
const onCallUpdated = () => this._onObservedCallUpdated(observedCall);
|
|
130
137
|
|
|
131
138
|
if (this.observedCalls.has(observedCall.callId)) throw new Error(`Observed Call with id ${observedCall.callId} already exists`);
|
|
132
139
|
|
|
140
|
+
if (settings.remoteTrackResolvePolicy === 'mediasoup-sfu') {
|
|
141
|
+
observedCall.remoteTrackResolver = new MediasoupRemoteTrackResolver(observedCall);
|
|
142
|
+
}
|
|
143
|
+
|
|
133
144
|
observedCall.once('close', () => {
|
|
134
145
|
this.observedCalls.delete(observedCall.callId);
|
|
135
146
|
observedCall.off('update', onCallUpdated);
|
|
@@ -210,6 +221,10 @@ export class Observer extends EventEmitter {
|
|
|
210
221
|
this.totalClientIssues += call.deltaNumberOfIssues;
|
|
211
222
|
}
|
|
212
223
|
|
|
224
|
+
public createEventMonitor<CTX = unknown>(ctx?: CTX): ObserverEventMonitor<CTX> {
|
|
225
|
+
return new ObserverEventMonitor<CTX>(this, ctx ?? {} as CTX);
|
|
226
|
+
}
|
|
227
|
+
|
|
213
228
|
// public resetSummaryMetrics() {
|
|
214
229
|
// this.totalAddedCall = 0;
|
|
215
230
|
// this.totalRemovedCall = 0;
|