@observertc/observer-js 1.0.1-7be4daa.0 → 1.0.1-7f7cf82.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/ObservedClient.d.ts.map +1 -1
- package/lib/ObservedClient.js +113 -6
- 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 +22 -0
- package/lib/ObservedPeerConnection.d.ts.map +1 -1
- package/lib/ObservedPeerConnection.js +18 -0
- package/lib/ObserverEventMonitor.d.ts +32 -0
- package/lib/ObserverEventMonitor.d.ts.map +1 -1
- package/lib/ObserverEventMonitor.js +113 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/schema/ClientEventTypes.d.ts +147 -79
- package/lib/schema/ClientEventTypes.d.ts.map +1 -1
- package/lib/schema/ClientEventTypes.js +5 -2
- package/package.json +1 -1
- package/src/ObservedClient.ts +113 -6
- package/src/ObservedInboundTrack.ts +2 -0
- package/src/ObservedOutboundTrack.ts +2 -0
- package/src/ObservedPeerConnection.ts +39 -0
- package/src/ObserverEventMonitor.ts +153 -0
- package/src/index.ts +1 -2
- package/src/schema/ClientEventTypes.ts +187 -83
|
@@ -21,9 +21,10 @@ var ClientEventTypes;
|
|
|
21
21
|
ClientEventTypes["DATA_CHANNEL_ERROR"] = "DATA_CHANNEL_ERROR";
|
|
22
22
|
ClientEventTypes["NEGOTIATION_NEEDED"] = "NEGOTIATION_NEEDED";
|
|
23
23
|
ClientEventTypes["SIGNALING_STATE_CHANGE"] = "SIGNALING_STATE_CHANGE";
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
// ICE_GATHERING_STATE_CHANGE = 'ICE_GATHERING_STATE_CHANGE',
|
|
25
|
+
// ICE_CONNECTION_STATE_CHANGE = 'ICE_CONNECTION_STATE_CHANGE',
|
|
26
26
|
ClientEventTypes["ICE_CANDIDATE"] = "ICE_CANDIDATE";
|
|
27
|
+
ClientEventTypes["ICE_CANDIDATE_ERROR"] = "ICE_CANDIDATE_ERROR";
|
|
27
28
|
// mediasoup events
|
|
28
29
|
ClientEventTypes["PRODUCER_ADDED"] = "PRODUCER_ADDED";
|
|
29
30
|
ClientEventTypes["PRODUCER_REMOVED"] = "PRODUCER_REMOVED";
|
|
@@ -31,6 +32,8 @@ var ClientEventTypes;
|
|
|
31
32
|
ClientEventTypes["PRODUCER_RESUMED"] = "PRODUCER_RESUMED";
|
|
32
33
|
ClientEventTypes["CONSUMER_ADDED"] = "CONSUMER_ADDED";
|
|
33
34
|
ClientEventTypes["CONSUMER_REMOVED"] = "CONSUMER_REMOVED";
|
|
35
|
+
ClientEventTypes["CONSUMER_PAUSED"] = "CONSUMER_PAUSED";
|
|
36
|
+
ClientEventTypes["CONSUMER_RESUMED"] = "CONSUMER_RESUMED";
|
|
34
37
|
ClientEventTypes["DATA_PRODUCER_CREATED"] = "DATA_PRODUCER_CREATED";
|
|
35
38
|
ClientEventTypes["DATA_PRODUCER_CLOSED"] = "DATA_PRODUCER_CLOSED";
|
|
36
39
|
ClientEventTypes["DATA_CONSUMER_CREATED"] = "DATA_CONSUMER_CREATED";
|
package/package.json
CHANGED
package/src/ObservedClient.ts
CHANGED
|
@@ -381,7 +381,7 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
|
|
|
381
381
|
} else if (postBuffer) {
|
|
382
382
|
postBuffer.push(event);
|
|
383
383
|
} else {
|
|
384
|
-
logger.warn('Received PEER_CONNECTION_OPENED event without a corresponding observedPeerConnection', event);
|
|
384
|
+
logger.warn('Received PEER_CONNECTION_OPENED event without a corresponding observedPeerConnection: %o', event);
|
|
385
385
|
}
|
|
386
386
|
|
|
387
387
|
}
|
|
@@ -398,7 +398,7 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
|
|
|
398
398
|
} else if (postBuffer) {
|
|
399
399
|
postBuffer.push(event);
|
|
400
400
|
} else {
|
|
401
|
-
logger.warn('Received PEER_CONNECTION_CLOSED event without a corresponding observedPeerConnection', event);
|
|
401
|
+
logger.warn('Received PEER_CONNECTION_CLOSED event without a corresponding observedPeerConnection: %o', event);
|
|
402
402
|
}
|
|
403
403
|
}
|
|
404
404
|
break;
|
|
@@ -415,7 +415,7 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
|
|
|
415
415
|
} else if (postBuffer) {
|
|
416
416
|
postBuffer.push(event);
|
|
417
417
|
} else {
|
|
418
|
-
logger.warn('Received MEDIA_TRACK_ADDED event without a corresponding observedPeerConnection or observedTrack', event);
|
|
418
|
+
logger.warn('Received MEDIA_TRACK_ADDED event without a corresponding observedPeerConnection or observedTrack: %o', event);
|
|
419
419
|
}
|
|
420
420
|
}
|
|
421
421
|
break;
|
|
@@ -432,7 +432,7 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
|
|
|
432
432
|
} else if (postBuffer) {
|
|
433
433
|
postBuffer.push(event);
|
|
434
434
|
} else {
|
|
435
|
-
logger.warn('Received MEDIA_TRACK_REMOVED event without a corresponding observedPeerConnection or observedTrack', event);
|
|
435
|
+
logger.warn('Received MEDIA_TRACK_REMOVED event without a corresponding observedPeerConnection or observedTrack: %o', event);
|
|
436
436
|
}
|
|
437
437
|
}
|
|
438
438
|
break;
|
|
@@ -449,7 +449,7 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
|
|
|
449
449
|
} else if (postBuffer) {
|
|
450
450
|
postBuffer.push(event);
|
|
451
451
|
} else {
|
|
452
|
-
logger.warn('Received DATA_CHANNEL_OPENED event without a corresponding observedPeerConnection or observedDataChannel', event);
|
|
452
|
+
logger.warn('Received DATA_CHANNEL_OPENED event without a corresponding observedPeerConnection or observedDataChannel: %o', event);
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
break;
|
|
@@ -466,12 +466,119 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
|
|
|
466
466
|
} else if (postBuffer) {
|
|
467
467
|
postBuffer.push(event);
|
|
468
468
|
} else {
|
|
469
|
-
logger.warn('Received DATA_CHANNEL_CLOSE event without a corresponding observedPeerConnection or observedDataChannel', event);
|
|
469
|
+
logger.warn('Received DATA_CHANNEL_CLOSE event without a corresponding observedPeerConnection or observedDataChannel: %o', event);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
break;
|
|
473
|
+
}
|
|
474
|
+
case ClientEventTypes.MEDIA_TRACK_MUTED: {
|
|
475
|
+
const payload = parseJsonAs<Record<string, unknown>>(event.payload);
|
|
476
|
+
|
|
477
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.trackId && typeof payload.trackId === 'string') {
|
|
478
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
479
|
+
const observedInboundTrack = observedPeerConnection?.observedInboundTracks.get(payload.trackId);
|
|
480
|
+
const observedOutboundTrack = observedPeerConnection?.observedOutboundTracks.get(payload.trackId);
|
|
481
|
+
|
|
482
|
+
if (observedPeerConnection) {
|
|
483
|
+
if (observedInboundTrack) {
|
|
484
|
+
observedInboundTrack.muted = true;
|
|
485
|
+
observedPeerConnection?.emit('muted-inbound-track', observedInboundTrack);
|
|
486
|
+
} else if (observedOutboundTrack) {
|
|
487
|
+
observedOutboundTrack.muted = true;
|
|
488
|
+
observedPeerConnection?.emit('muted-outbound-track', observedOutboundTrack);
|
|
489
|
+
}
|
|
490
|
+
} else if (postBuffer) {
|
|
491
|
+
postBuffer.push(event);
|
|
492
|
+
} else {
|
|
493
|
+
logger.warn('Received MEDIA_TRACK_MUTED event without a corresponding observedPeerConnection or observedTrack: %o', event);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
break;
|
|
498
|
+
}
|
|
499
|
+
case ClientEventTypes.MEDIA_TRACK_UNMUTED: {
|
|
500
|
+
const payload = parseJsonAs<Record<string, unknown>>(event.payload);
|
|
501
|
+
|
|
502
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.trackId && typeof payload.trackId === 'string') {
|
|
503
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
504
|
+
const observedInboundTrack = observedPeerConnection?.observedInboundTracks.get(payload.trackId);
|
|
505
|
+
const observedOutboundTrack = observedPeerConnection?.observedOutboundTracks.get(payload.trackId);
|
|
506
|
+
|
|
507
|
+
if (observedPeerConnection) {
|
|
508
|
+
if (observedInboundTrack) {
|
|
509
|
+
observedInboundTrack.muted = false;
|
|
510
|
+
observedPeerConnection?.emit('unmuted-inbound-track', observedInboundTrack);
|
|
511
|
+
} else if (observedOutboundTrack) {
|
|
512
|
+
observedOutboundTrack.muted = false;
|
|
513
|
+
observedPeerConnection?.emit('unmuted-outbound-track', observedOutboundTrack);
|
|
514
|
+
}
|
|
515
|
+
} else if (postBuffer) {
|
|
516
|
+
postBuffer.push(event);
|
|
517
|
+
} else {
|
|
518
|
+
logger.warn('Received MEDIA_TRACK_UNMUTED event without a corresponding observedPeerConnection or observedTrack: %o', event);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
break;
|
|
522
|
+
}
|
|
523
|
+
case ClientEventTypes.ICE_CONNECTION_STATE_CHANGED: {
|
|
524
|
+
const payload = parseJsonAs<Record<string, unknown>>(event.payload);
|
|
525
|
+
|
|
526
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.iceConnectionState && typeof payload.iceConnectionState === 'string') {
|
|
527
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
528
|
+
|
|
529
|
+
if (observedPeerConnection) {
|
|
530
|
+
observedPeerConnection.iceConnectionState = payload.iceConnectionState;
|
|
531
|
+
observedPeerConnection.emit('iceconnectionstatechange', {
|
|
532
|
+
state: payload.iceConnectionState,
|
|
533
|
+
});
|
|
534
|
+
} else if (postBuffer) {
|
|
535
|
+
postBuffer.push(event);
|
|
536
|
+
} else {
|
|
537
|
+
logger.warn('Received ICE_CONNECTION_STATE_CHANGED event without a corresponding observedPeerConnection: %o', event);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
break;
|
|
541
|
+
}
|
|
542
|
+
case ClientEventTypes.ICE_GATHERING_STATE_CHANGED: {
|
|
543
|
+
const payload = parseJsonAs<Record<string, unknown>>(event.payload);
|
|
544
|
+
|
|
545
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.iceGatheringState && typeof payload.iceGatheringState === 'string') {
|
|
546
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
547
|
+
|
|
548
|
+
if (observedPeerConnection) {
|
|
549
|
+
observedPeerConnection.iceGatheringState = payload.iceGatheringState;
|
|
550
|
+
observedPeerConnection.emit('icegatheringstatechange', {
|
|
551
|
+
state: payload.iceGatheringState,
|
|
552
|
+
});
|
|
553
|
+
} else if (postBuffer) {
|
|
554
|
+
postBuffer.push(event);
|
|
555
|
+
} else {
|
|
556
|
+
logger.warn('Received ICE_GATHERING_STATE_CHANGED event without a corresponding observedPeerConnection: %o', event);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
break;
|
|
560
|
+
}
|
|
561
|
+
case ClientEventTypes.PEER_CONNECTION_STATE_CHANGED: {
|
|
562
|
+
const payload = parseJsonAs<Record<string, unknown>>(event.payload);
|
|
563
|
+
|
|
564
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.peerConnectionState && typeof payload.peerConnectionState === 'string') {
|
|
565
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
566
|
+
|
|
567
|
+
if (observedPeerConnection) {
|
|
568
|
+
observedPeerConnection.connectionState = payload.peerConnectionState;
|
|
569
|
+
observedPeerConnection.emit('connectionstatechange', {
|
|
570
|
+
state: payload.peerConnectionState,
|
|
571
|
+
});
|
|
572
|
+
} else if (postBuffer) {
|
|
573
|
+
postBuffer.push(event);
|
|
574
|
+
} else {
|
|
575
|
+
logger.warn('Received PEER_CONNECTION_STATE_CHANGED event without a corresponding observedPeerConnection: %o', event);
|
|
470
576
|
}
|
|
471
577
|
}
|
|
472
578
|
break;
|
|
473
579
|
}
|
|
474
580
|
}
|
|
581
|
+
|
|
475
582
|
this.emit('clientEvent', event);
|
|
476
583
|
}
|
|
477
584
|
|
|
@@ -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
|
};
|
|
@@ -108,6 +128,10 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
108
128
|
public closedAt?: number;
|
|
109
129
|
public updated = Date.now();
|
|
110
130
|
|
|
131
|
+
public connectionState?: string;
|
|
132
|
+
public iceConnectionState?: string;
|
|
133
|
+
public iceGatheringState?: string;
|
|
134
|
+
|
|
111
135
|
public availableIncomingBitrate = 0;
|
|
112
136
|
public availableOutgoingBitrate = 0;
|
|
113
137
|
public totalInboundPacketsLost = 0;
|
|
@@ -650,6 +674,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
650
674
|
this.emit('added-certificate', observedCertificate);
|
|
651
675
|
} else {
|
|
652
676
|
observedCertificate.update(stats);
|
|
677
|
+
this.emit('updated-certificate', observedCertificate);
|
|
653
678
|
}
|
|
654
679
|
|
|
655
680
|
return observedCertificate;
|
|
@@ -675,6 +700,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
675
700
|
} else {
|
|
676
701
|
observedCodec.update(stats);
|
|
677
702
|
}
|
|
703
|
+
this.emit('updated-codec', observedCodec);
|
|
678
704
|
|
|
679
705
|
return observedCodec;
|
|
680
706
|
}
|
|
@@ -699,6 +725,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
699
725
|
} else {
|
|
700
726
|
observedDataChannel.update(stats);
|
|
701
727
|
}
|
|
728
|
+
this.emit('updated-data-channel', observedDataChannel);
|
|
702
729
|
|
|
703
730
|
return observedDataChannel;
|
|
704
731
|
}
|
|
@@ -723,6 +750,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
723
750
|
} else {
|
|
724
751
|
observedIceCandidate.update(stats);
|
|
725
752
|
}
|
|
753
|
+
this.emit('updated-ice-candidate', observedIceCandidate);
|
|
726
754
|
|
|
727
755
|
return observedIceCandidate;
|
|
728
756
|
}
|
|
@@ -747,6 +775,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
747
775
|
} else {
|
|
748
776
|
observedIceCandidatePair.update(stats);
|
|
749
777
|
}
|
|
778
|
+
this.emit('updated-ice-candidate-pair', observedIceCandidatePair);
|
|
750
779
|
|
|
751
780
|
return observedIceCandidatePair;
|
|
752
781
|
}
|
|
@@ -771,6 +800,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
771
800
|
} else {
|
|
772
801
|
observedIceTransport.update(stats);
|
|
773
802
|
}
|
|
803
|
+
this.emit('updated-ice-transport', observedIceTransport);
|
|
774
804
|
|
|
775
805
|
return observedIceTransport;
|
|
776
806
|
}
|
|
@@ -802,6 +832,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
802
832
|
} else {
|
|
803
833
|
observedInboundRtp.update(stats);
|
|
804
834
|
}
|
|
835
|
+
this.emit('updated-inbound-rtp', observedInboundRtp);
|
|
805
836
|
|
|
806
837
|
return observedInboundRtp;
|
|
807
838
|
}
|
|
@@ -837,6 +868,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
837
868
|
} else {
|
|
838
869
|
observedInboundTrack.update(stats);
|
|
839
870
|
}
|
|
871
|
+
this.emit('updated-inbound-track', observedInboundTrack);
|
|
840
872
|
|
|
841
873
|
return observedInboundTrack;
|
|
842
874
|
}
|
|
@@ -866,6 +898,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
866
898
|
} else {
|
|
867
899
|
observedMediaPlayout.update(stats);
|
|
868
900
|
}
|
|
901
|
+
this.emit('updated-media-playout', observedMediaPlayout);
|
|
869
902
|
|
|
870
903
|
return observedMediaPlayout;
|
|
871
904
|
}
|
|
@@ -895,6 +928,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
895
928
|
} else {
|
|
896
929
|
observedMediaSource.update(stats);
|
|
897
930
|
}
|
|
931
|
+
this.emit('updated-media-source', observedMediaSource);
|
|
898
932
|
|
|
899
933
|
return observedMediaSource;
|
|
900
934
|
}
|
|
@@ -925,6 +959,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
925
959
|
} else {
|
|
926
960
|
observedOutboundRtp.update(stats);
|
|
927
961
|
}
|
|
962
|
+
this.emit('updated-outbound-rtp', observedOutboundRtp);
|
|
928
963
|
|
|
929
964
|
return observedOutboundRtp;
|
|
930
965
|
}
|
|
@@ -959,6 +994,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
959
994
|
} else {
|
|
960
995
|
observedOutboundTrack.update(stats);
|
|
961
996
|
}
|
|
997
|
+
this.emit('updated-outbound-track', observedOutboundTrack);
|
|
962
998
|
|
|
963
999
|
return observedOutboundTrack;
|
|
964
1000
|
}
|
|
@@ -983,6 +1019,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
983
1019
|
} else {
|
|
984
1020
|
observedPeerConnectionTransport.update(stats);
|
|
985
1021
|
}
|
|
1022
|
+
this.emit('updated-peer-connection-transport', observedPeerConnectionTransport);
|
|
986
1023
|
|
|
987
1024
|
return observedPeerConnectionTransport;
|
|
988
1025
|
}
|
|
@@ -1013,6 +1050,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
1013
1050
|
} else {
|
|
1014
1051
|
observedRemoteInboundRtp.update(stats);
|
|
1015
1052
|
}
|
|
1053
|
+
this.emit('updated-remote-inbound-rtp', observedRemoteInboundRtp);
|
|
1016
1054
|
|
|
1017
1055
|
return observedRemoteInboundRtp;
|
|
1018
1056
|
}
|
|
@@ -1043,6 +1081,7 @@ export class ObservedPeerConnection extends EventEmitter {
|
|
|
1043
1081
|
} else {
|
|
1044
1082
|
observedRemoteOutboundRtp.update(stats);
|
|
1045
1083
|
}
|
|
1084
|
+
this.emit('updated-remote-outbound-rtp', observedRemoteOutboundRtp);
|
|
1046
1085
|
|
|
1047
1086
|
return observedRemoteOutboundRtp;
|
|
1048
1087
|
}
|