@observertc/observer-js 1.0.1-9d3744d.0 → 1.0.1-a6fb9d3.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/README.md +535 -1
- package/lib/ObservedCall.d.ts +8 -7
- package/lib/ObservedCall.d.ts.map +1 -1
- package/lib/ObservedCall.js +42 -38
- 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 +20 -10
- package/lib/ObservedClient.d.ts.map +1 -1
- package/lib/ObservedClient.js +330 -13
- package/lib/ObservedClientEventMonitor.d.ts +91 -0
- package/lib/ObservedClientEventMonitor.d.ts.map +1 -0
- package/lib/ObservedClientEventMonitor.js +254 -0
- package/lib/ObservedTURN.d.ts +1 -1
- package/lib/ObservedTURN.d.ts.map +1 -1
- package/lib/ObservedTURN.js +1 -0
- package/lib/ObservedTurnServer.d.ts +2 -2
- package/lib/ObservedTurnServer.d.ts.map +1 -1
- package/lib/Observer.d.ts +9 -6
- package/lib/Observer.d.ts.map +1 -1
- package/lib/Observer.js +26 -25
- package/lib/ObserverEventMonitor.d.ts +138 -0
- package/lib/ObserverEventMonitor.d.ts.map +1 -0
- package/lib/ObserverEventMonitor.js +433 -0
- package/lib/common/ObserverSummary.d.ts.map +1 -0
- package/lib/common/SummaryTypes.d.ts +75 -0
- package/lib/common/SummaryTypes.d.ts.map +1 -0
- package/lib/common/SummaryTypes.js +2 -0
- package/lib/index.d.ts +19 -17
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +21 -17
- package/lib/mediasoup/ObservedMediasoupRouter.d.ts +7 -0
- package/lib/mediasoup/ObservedMediasoupRouter.d.ts.map +1 -0
- package/lib/mediasoup/ObservedMediasoupRouter.js +12 -0
- package/lib/monitors/SummaryMonitor.d.ts +19 -0
- package/lib/monitors/SummaryMonitor.d.ts.map +1 -0
- package/lib/monitors/SummaryMonitor.js +129 -0
- package/lib/schema/ClientEventTypes.d.ts +147 -19
- package/lib/schema/ClientEventTypes.d.ts.map +1 -1
- package/lib/schema/ClientEventTypes.js +5 -2
- 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/lib/utils/RemoteTrackResolver.d.ts +2 -2
- package/lib/utils/RemoteTrackResolver.d.ts.map +1 -1
- package/lib/{ObservedCertificate.d.ts → webrtc/ObservedCertificate.d.ts} +1 -1
- package/lib/webrtc/ObservedCertificate.d.ts.map +1 -0
- package/lib/{ObservedCodec.d.ts → webrtc/ObservedCodec.d.ts} +1 -1
- package/lib/webrtc/ObservedCodec.d.ts.map +1 -0
- package/lib/{ObservedDataChannel.d.ts → webrtc/ObservedDataChannel.d.ts} +3 -1
- package/lib/webrtc/ObservedDataChannel.d.ts.map +1 -0
- package/lib/{ObservedDataChannel.js → webrtc/ObservedDataChannel.js} +2 -0
- package/lib/{ObservedIceCandidate.d.ts → webrtc/ObservedIceCandidate.d.ts} +1 -1
- package/lib/webrtc/ObservedIceCandidate.d.ts.map +1 -0
- package/lib/{ObservedIceCandidatePair.d.ts → webrtc/ObservedIceCandidatePair.d.ts} +3 -2
- package/lib/webrtc/ObservedIceCandidatePair.d.ts.map +1 -0
- package/lib/{ObservedIceCandidatePair.js → webrtc/ObservedIceCandidatePair.js} +17 -1
- package/lib/{ObservedIceTransport.d.ts → webrtc/ObservedIceTransport.d.ts} +1 -1
- package/lib/webrtc/ObservedIceTransport.d.ts.map +1 -0
- package/lib/{ObservedInboundRtp.d.ts → webrtc/ObservedInboundRtp.d.ts} +2 -2
- package/lib/webrtc/ObservedInboundRtp.d.ts.map +1 -0
- package/lib/{ObservedInboundTrack.d.ts → webrtc/ObservedInboundTrack.d.ts} +7 -4
- package/lib/webrtc/ObservedInboundTrack.d.ts.map +1 -0
- package/lib/{ObservedInboundTrack.js → webrtc/ObservedInboundTrack.js} +4 -1
- package/lib/{ObservedMediaPlayout.d.ts → webrtc/ObservedMediaPlayout.d.ts} +2 -2
- package/lib/webrtc/ObservedMediaPlayout.d.ts.map +1 -0
- package/lib/{ObservedMediaSource.d.ts → webrtc/ObservedMediaSource.d.ts} +2 -2
- package/lib/webrtc/ObservedMediaSource.d.ts.map +1 -0
- package/lib/{ObservedOutboundRtp.d.ts → webrtc/ObservedOutboundRtp.d.ts} +2 -2
- package/lib/webrtc/ObservedOutboundRtp.d.ts.map +1 -0
- package/lib/{ObservedOutboundTrack.d.ts → webrtc/ObservedOutboundTrack.d.ts} +7 -4
- package/lib/webrtc/ObservedOutboundTrack.d.ts.map +1 -0
- package/lib/{ObservedOutboundTrack.js → webrtc/ObservedOutboundTrack.js} +4 -1
- package/lib/{ObservedPeerConnection.d.ts → webrtc/ObservedPeerConnection.d.ts} +26 -4
- package/lib/webrtc/ObservedPeerConnection.d.ts.map +1 -0
- package/lib/{ObservedPeerConnection.js → webrtc/ObservedPeerConnection.js} +82 -17
- package/lib/{ObservedPeerConnectionTransport.d.ts → webrtc/ObservedPeerConnectionTransport.d.ts} +1 -1
- package/lib/webrtc/ObservedPeerConnectionTransport.d.ts.map +1 -0
- package/lib/{ObservedRemoteInboundRtp.d.ts → webrtc/ObservedRemoteInboundRtp.d.ts} +2 -2
- package/lib/webrtc/ObservedRemoteInboundRtp.d.ts.map +1 -0
- package/lib/{ObservedRemoteOutboundRtp.d.ts → webrtc/ObservedRemoteOutboundRtp.d.ts} +2 -2
- package/lib/webrtc/ObservedRemoteOutboundRtp.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/ObservedCall.ts +44 -48
- package/src/ObservedCallEventMonitor.ts +392 -0
- package/src/ObservedClient.ts +363 -22
- package/src/ObservedClientEventMonitor.ts +309 -0
- package/src/ObservedTURN.ts +2 -1
- package/src/ObservedTurnServer.ts +2 -2
- package/src/Observer.ts +37 -33
- package/src/ObserverEventMonitor.ts +551 -0
- package/src/common/SummaryTypes.ts +91 -0
- package/src/index.ts +19 -18
- package/src/mediasoup/ObservedMediasoupRouter.ts +12 -0
- package/src/monitors/SummaryMonitor.ts +181 -0
- package/src/schema/ClientEventTypes.ts +187 -19
- 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/src/utils/RemoteTrackResolver.ts +2 -2
- package/src/{ObservedCertificate.ts → webrtc/ObservedCertificate.ts} +1 -1
- package/src/{ObservedCodec.ts → webrtc/ObservedCodec.ts} +1 -1
- package/src/{ObservedDataChannel.ts → webrtc/ObservedDataChannel.ts} +4 -1
- package/src/{ObservedIceCandidate.ts → webrtc/ObservedIceCandidate.ts} +1 -1
- package/src/{ObservedIceCandidatePair.ts → webrtc/ObservedIceCandidatePair.ts} +19 -3
- package/src/{ObservedIceTransport.ts → webrtc/ObservedIceTransport.ts} +1 -1
- package/src/{ObservedInboundRtp.ts → webrtc/ObservedInboundRtp.ts} +2 -2
- package/src/{ObservedInboundTrack.ts → webrtc/ObservedInboundTrack.ts} +9 -4
- package/src/{ObservedMediaPlayout.ts → webrtc/ObservedMediaPlayout.ts} +2 -2
- package/src/{ObservedMediaSource.ts → webrtc/ObservedMediaSource.ts} +2 -2
- package/src/{ObservedOutboundRtp.ts → webrtc/ObservedOutboundRtp.ts} +2 -2
- package/src/{ObservedOutboundTrack.ts → webrtc/ObservedOutboundTrack.ts} +9 -4
- package/src/{ObservedPeerConnection.ts → webrtc/ObservedPeerConnection.ts} +124 -37
- package/src/{ObservedPeerConnectionTransport.ts → webrtc/ObservedPeerConnectionTransport.ts} +1 -1
- package/src/{ObservedRemoteInboundRtp.ts → webrtc/ObservedRemoteInboundRtp.ts} +2 -2
- package/src/{ObservedRemoteOutboundRtp.ts → webrtc/ObservedRemoteOutboundRtp.ts} +2 -2
- package/lib/ObservedCertificate.d.ts.map +0 -1
- package/lib/ObservedCodec.d.ts.map +0 -1
- package/lib/ObservedDataChannel.d.ts.map +0 -1
- package/lib/ObservedIceCandidate.d.ts.map +0 -1
- package/lib/ObservedIceCandidatePair.d.ts.map +0 -1
- package/lib/ObservedIceTransport.d.ts.map +0 -1
- package/lib/ObservedInboundRtp.d.ts.map +0 -1
- package/lib/ObservedInboundTrack.d.ts.map +0 -1
- package/lib/ObservedMediaPlayout.d.ts.map +0 -1
- package/lib/ObservedMediaSource.d.ts.map +0 -1
- package/lib/ObservedOutboundRtp.d.ts.map +0 -1
- package/lib/ObservedOutboundTrack.d.ts.map +0 -1
- package/lib/ObservedPeerConnection.d.ts.map +0 -1
- package/lib/ObservedPeerConnectionTransport.d.ts.map +0 -1
- package/lib/ObservedRemoteInboundRtp.d.ts.map +0 -1
- package/lib/ObservedRemoteOutboundRtp.d.ts.map +0 -1
- package/lib/ObserverSummary.d.ts.map +0 -1
- package/lib/updaters/OnAllCallObserverUpdater_.d.ts.map +0 -1
- package/lib/updaters/OnAnyCallObserverUpdater_.d.ts.map +0 -1
- /package/lib/{ObserverSummary.d.ts → common/ObserverSummary.d.ts} +0 -0
- /package/lib/{ObserverSummary.js → common/ObserverSummary.js} +0 -0
- /package/lib/{ObservedCertificate.js → webrtc/ObservedCertificate.js} +0 -0
- /package/lib/{ObservedCodec.js → webrtc/ObservedCodec.js} +0 -0
- /package/lib/{ObservedIceCandidate.js → webrtc/ObservedIceCandidate.js} +0 -0
- /package/lib/{ObservedIceTransport.js → webrtc/ObservedIceTransport.js} +0 -0
- /package/lib/{ObservedInboundRtp.js → webrtc/ObservedInboundRtp.js} +0 -0
- /package/lib/{ObservedMediaPlayout.js → webrtc/ObservedMediaPlayout.js} +0 -0
- /package/lib/{ObservedMediaSource.js → webrtc/ObservedMediaSource.js} +0 -0
- /package/lib/{ObservedOutboundRtp.js → webrtc/ObservedOutboundRtp.js} +0 -0
- /package/lib/{ObservedPeerConnectionTransport.js → webrtc/ObservedPeerConnectionTransport.js} +0 -0
- /package/lib/{ObservedRemoteInboundRtp.js → webrtc/ObservedRemoteInboundRtp.js} +0 -0
- /package/lib/{ObservedRemoteOutboundRtp.js → webrtc/ObservedRemoteOutboundRtp.js} +0 -0
- /package/src/{ObserverSummary.ts → common/ObserverSummary.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservedClient.d.ts","sourceRoot":"","sources":["../src/ObservedClient.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ObservedClient.d.ts","sourceRoot":"","sources":["../src/ObservedClient.ts"],"names":[],"mappings":"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"}
|
package/lib/ObservedClient.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ObservedClient = void 0;
|
|
4
4
|
const events_1 = require("events");
|
|
5
|
-
const ObservedPeerConnection_1 = require("./ObservedPeerConnection");
|
|
5
|
+
const ObservedPeerConnection_1 = require("./webrtc/ObservedPeerConnection");
|
|
6
6
|
const logger_1 = require("./common/logger");
|
|
7
7
|
const ClientEventTypes_1 = require("./schema/ClientEventTypes");
|
|
8
8
|
const ClientMetaTypes_1 = require("./schema/ClientMetaTypes");
|
|
@@ -10,21 +10,22 @@ const utils_1 = require("./common/utils");
|
|
|
10
10
|
const Detectors_1 = require("./detectors/Detectors");
|
|
11
11
|
const logger = (0, logger_1.createLogger)('ObservedClient');
|
|
12
12
|
class ObservedClient extends events_1.EventEmitter {
|
|
13
|
+
settings;
|
|
13
14
|
call;
|
|
14
15
|
detectors;
|
|
15
|
-
clientId;
|
|
16
16
|
observedPeerConnections = new Map();
|
|
17
17
|
calculatedScore = {
|
|
18
18
|
weight: 1,
|
|
19
19
|
value: undefined,
|
|
20
20
|
};
|
|
21
|
-
appData;
|
|
22
21
|
attachments;
|
|
23
22
|
updated = Date.now();
|
|
24
23
|
acceptedSamples = 0;
|
|
25
24
|
closed = false;
|
|
26
25
|
joinedAt;
|
|
27
26
|
leftAt;
|
|
27
|
+
closedAt;
|
|
28
|
+
lastSampleTimestamp;
|
|
28
29
|
// the timestamp of the CLIENT_JOINED event
|
|
29
30
|
operationSystem;
|
|
30
31
|
engine;
|
|
@@ -87,14 +88,22 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
87
88
|
totalNumberOfIssues = 0;
|
|
88
89
|
mediaDevices = [];
|
|
89
90
|
issues = [];
|
|
91
|
+
_injections = {};
|
|
92
|
+
_autoCloseTimer;
|
|
90
93
|
constructor(settings, call) {
|
|
91
94
|
super();
|
|
95
|
+
this.settings = settings;
|
|
92
96
|
this.call = call;
|
|
93
97
|
this.setMaxListeners(Infinity);
|
|
94
|
-
this.
|
|
95
|
-
this.appData = settings.appData ?? {};
|
|
98
|
+
this._createAutoClose();
|
|
96
99
|
this.detectors = new Detectors_1.Detectors();
|
|
97
100
|
}
|
|
101
|
+
get clientId() {
|
|
102
|
+
return this.settings.clientId;
|
|
103
|
+
}
|
|
104
|
+
get appData() {
|
|
105
|
+
return this.settings.appData ?? {};
|
|
106
|
+
}
|
|
98
107
|
get numberOfPeerConnections() {
|
|
99
108
|
return this.observedPeerConnections.size;
|
|
100
109
|
}
|
|
@@ -105,12 +114,37 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
105
114
|
if (this.closed)
|
|
106
115
|
return;
|
|
107
116
|
this.closed = true;
|
|
117
|
+
this._injections.clientEvents?.forEach((clientEvent) => this._processClientEvent(clientEvent));
|
|
118
|
+
this._injections.clientIssues?.forEach((clientIssue) => this.addIssue(clientIssue));
|
|
119
|
+
this._injections.extensionStats?.forEach((extensionStat) => this.addExtensionStats(extensionStat));
|
|
120
|
+
this._injections.clientMetaItems?.forEach((clientMetaItem) => this.addMetadata(clientMetaItem));
|
|
108
121
|
Array.from(this.observedPeerConnections.values()).forEach((peerConnection) => peerConnection.close());
|
|
122
|
+
if (!this.leftAt) {
|
|
123
|
+
this.leftAt = this.lastSampleTimestamp;
|
|
124
|
+
if (this.leftAt) {
|
|
125
|
+
this.emit('left');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
this.closedAt = Date.now();
|
|
109
129
|
this.emit('close');
|
|
110
130
|
}
|
|
131
|
+
_createAutoClose() {
|
|
132
|
+
if (this.closed)
|
|
133
|
+
return;
|
|
134
|
+
if (this.settings.maxIdleTimeMs === undefined || this.settings.maxIdleTimeMs < 1)
|
|
135
|
+
return;
|
|
136
|
+
clearTimeout(this._autoCloseTimer);
|
|
137
|
+
this._autoCloseTimer = setTimeout(() => {
|
|
138
|
+
if (this.closed)
|
|
139
|
+
return;
|
|
140
|
+
logger.debug(`Client ${this.clientId} is idle for ${this.settings.maxIdleTimeMs}ms, closing...`);
|
|
141
|
+
this.close();
|
|
142
|
+
}, this.settings.maxIdleTimeMs);
|
|
143
|
+
}
|
|
111
144
|
accept(sample) {
|
|
112
145
|
if (this.closed)
|
|
113
146
|
throw new Error(`Client ${this.clientId} is closed`);
|
|
147
|
+
this._createAutoClose();
|
|
114
148
|
const now = Date.now();
|
|
115
149
|
const elapsedInMs = now - this.updated;
|
|
116
150
|
const elapsedInSeconds = elapsedInMs / 1000;
|
|
@@ -146,8 +180,11 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
146
180
|
this.usingTCP = false;
|
|
147
181
|
this.currentMinRttInMs = undefined;
|
|
148
182
|
this.currentMaxRttInMs = undefined;
|
|
183
|
+
this._mergeInjections(sample);
|
|
184
|
+
const clientEventsPostBuffer = [];
|
|
149
185
|
for (const clientEvent of sample.clientEvents ?? []) {
|
|
150
|
-
this._processClientEvent(clientEvent);
|
|
186
|
+
this._processClientEvent(clientEvent, clientEventsPostBuffer);
|
|
187
|
+
this.call.observer.emit('client-event', this, clientEvent);
|
|
151
188
|
}
|
|
152
189
|
for (const metaData of sample.clientMetaItems ?? []) {
|
|
153
190
|
this.addMetadata(metaData);
|
|
@@ -212,7 +249,9 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
212
249
|
++numberOfRttMeasurements;
|
|
213
250
|
}
|
|
214
251
|
}
|
|
215
|
-
|
|
252
|
+
for (const clientEvent of clientEventsPostBuffer) {
|
|
253
|
+
this._processClientEvent(clientEvent);
|
|
254
|
+
}
|
|
216
255
|
// emit new attachments?
|
|
217
256
|
this.attachments = sample.attachments;
|
|
218
257
|
this.totalDataChannelBytesReceived += this.deltaDataChannelBytesReceived;
|
|
@@ -240,11 +279,9 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
240
279
|
this.currentAvgRttInMs = 0 < numberOfRttMeasurements ? sumOfRtts / numberOfRttMeasurements : undefined;
|
|
241
280
|
this.calculatedScore.value = sample.score;
|
|
242
281
|
this.detectors.update();
|
|
282
|
+
this.lastSampleTimestamp = sample.timestamp;
|
|
243
283
|
// emit update
|
|
244
|
-
this.emit('update',
|
|
245
|
-
sample,
|
|
246
|
-
elapsedTimeInMs: now - this.updated,
|
|
247
|
-
});
|
|
284
|
+
this.emit('update', sample, now - this.updated);
|
|
248
285
|
this.updated = now;
|
|
249
286
|
// if result changed after update
|
|
250
287
|
if (this.calculatedScore.value) {
|
|
@@ -252,7 +289,7 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
252
289
|
++this.numberOfScoreMeasurements;
|
|
253
290
|
}
|
|
254
291
|
}
|
|
255
|
-
_processClientEvent(event) {
|
|
292
|
+
_processClientEvent(event, postBuffer) {
|
|
256
293
|
// eslint-disable-next-line no-console
|
|
257
294
|
// console.warn('ClientEvent', event);
|
|
258
295
|
switch (event.type) {
|
|
@@ -270,6 +307,7 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
270
307
|
logger.warn(`Client ${this.clientId} joinedAt timestamp was updated to ${event.timestamp}. the joined event will not be emitted.`);
|
|
271
308
|
}
|
|
272
309
|
}
|
|
310
|
+
logger.debug('Client %s joined at %o', this.clientId, event);
|
|
273
311
|
break;
|
|
274
312
|
}
|
|
275
313
|
case ClientEventTypes_1.ClientEventTypes.CLIENT_LEFT: {
|
|
@@ -282,10 +320,253 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
282
320
|
logger.warn(`Client ${this.clientId} leftAt timestamp was already set`);
|
|
283
321
|
}
|
|
284
322
|
}
|
|
323
|
+
logger.debug('Client %s left at %o', this.clientId, event);
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
case ClientEventTypes_1.ClientEventTypes.PEER_CONNECTION_OPENED: {
|
|
327
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
328
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string') {
|
|
329
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
330
|
+
if (observedPeerConnection) {
|
|
331
|
+
observedPeerConnection.openedAt = event.timestamp;
|
|
332
|
+
}
|
|
333
|
+
else if (postBuffer) {
|
|
334
|
+
postBuffer.push(event);
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
logger.warn('Received PEER_CONNECTION_OPENED event without a corresponding observedPeerConnection: %o', event);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
case ClientEventTypes_1.ClientEventTypes.PEER_CONNECTION_CLOSED: {
|
|
343
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
344
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string') {
|
|
345
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
346
|
+
if (observedPeerConnection) {
|
|
347
|
+
observedPeerConnection.closedAt = event.timestamp;
|
|
348
|
+
}
|
|
349
|
+
else if (postBuffer) {
|
|
350
|
+
postBuffer.push(event);
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
logger.warn('Received PEER_CONNECTION_CLOSED event without a corresponding observedPeerConnection: %o', event);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
case ClientEventTypes_1.ClientEventTypes.MEDIA_TRACK_ADDED: {
|
|
359
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
360
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.trackId && typeof payload.trackId === 'string') {
|
|
361
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
362
|
+
const observedTrack = observedPeerConnection?.observedInboundTracks.get(payload.trackId) ?? observedPeerConnection?.observedOutboundTracks.get(payload.trackId);
|
|
363
|
+
if (observedTrack) {
|
|
364
|
+
observedTrack.addedAt = event.timestamp;
|
|
365
|
+
}
|
|
366
|
+
else if (postBuffer) {
|
|
367
|
+
postBuffer.push(event);
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
logger.warn('Received MEDIA_TRACK_ADDED event without a corresponding observedPeerConnection or observedTrack: %o', event);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
break;
|
|
374
|
+
}
|
|
375
|
+
case ClientEventTypes_1.ClientEventTypes.MEDIA_TRACK_REMOVED: {
|
|
376
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
377
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.trackId && typeof payload.trackId === 'string') {
|
|
378
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
379
|
+
const observedTrack = observedPeerConnection?.observedInboundTracks.get(payload.trackId) ?? observedPeerConnection?.observedOutboundTracks.get(payload.trackId);
|
|
380
|
+
if (observedTrack) {
|
|
381
|
+
observedTrack.removedAt = event.timestamp;
|
|
382
|
+
}
|
|
383
|
+
else if (postBuffer) {
|
|
384
|
+
postBuffer.push(event);
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
logger.warn('Received MEDIA_TRACK_REMOVED event without a corresponding observedPeerConnection or observedTrack: %o', event);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
case ClientEventTypes_1.ClientEventTypes.DATA_CHANNEL_OPEN: {
|
|
393
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
394
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.dataChannelId && typeof payload.dataChannelId === 'string') {
|
|
395
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
396
|
+
const observedDataChannel = observedPeerConnection?.observedDataChannels.get(payload.dataChannelId);
|
|
397
|
+
if (observedDataChannel) {
|
|
398
|
+
observedDataChannel.addedAt = event.timestamp;
|
|
399
|
+
}
|
|
400
|
+
else if (postBuffer) {
|
|
401
|
+
postBuffer.push(event);
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
logger.warn('Received DATA_CHANNEL_OPENED event without a corresponding observedPeerConnection or observedDataChannel: %o', event);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
case ClientEventTypes_1.ClientEventTypes.DATA_CHANNEL_CLOSED: {
|
|
410
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
411
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.dataChannelId && typeof payload.dataChannelId === 'string') {
|
|
412
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
413
|
+
const observedDataChannel = observedPeerConnection?.observedDataChannels.get(payload.dataChannelId);
|
|
414
|
+
if (observedDataChannel) {
|
|
415
|
+
observedDataChannel.removedAt = event.timestamp;
|
|
416
|
+
}
|
|
417
|
+
else if (postBuffer) {
|
|
418
|
+
postBuffer.push(event);
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
logger.warn('Received DATA_CHANNEL_CLOSE event without a corresponding observedPeerConnection or observedDataChannel: %o', event);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
break;
|
|
425
|
+
}
|
|
426
|
+
case ClientEventTypes_1.ClientEventTypes.MEDIA_TRACK_MUTED: {
|
|
427
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
428
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.trackId && typeof payload.trackId === 'string') {
|
|
429
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
430
|
+
const observedInboundTrack = observedPeerConnection?.observedInboundTracks.get(payload.trackId);
|
|
431
|
+
const observedOutboundTrack = observedPeerConnection?.observedOutboundTracks.get(payload.trackId);
|
|
432
|
+
if (observedPeerConnection) {
|
|
433
|
+
if (observedInboundTrack) {
|
|
434
|
+
observedInboundTrack.muted = true;
|
|
435
|
+
observedPeerConnection?.emit('muted-inbound-track', observedInboundTrack);
|
|
436
|
+
}
|
|
437
|
+
else if (observedOutboundTrack) {
|
|
438
|
+
observedOutboundTrack.muted = true;
|
|
439
|
+
observedPeerConnection?.emit('muted-outbound-track', observedOutboundTrack);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
else if (postBuffer) {
|
|
443
|
+
postBuffer.push(event);
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
logger.warn('Received MEDIA_TRACK_MUTED event without a corresponding observedPeerConnection or observedTrack: %o', event);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
break;
|
|
450
|
+
}
|
|
451
|
+
case ClientEventTypes_1.ClientEventTypes.MEDIA_TRACK_UNMUTED: {
|
|
452
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
453
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.trackId && typeof payload.trackId === 'string') {
|
|
454
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
455
|
+
const observedInboundTrack = observedPeerConnection?.observedInboundTracks.get(payload.trackId);
|
|
456
|
+
const observedOutboundTrack = observedPeerConnection?.observedOutboundTracks.get(payload.trackId);
|
|
457
|
+
if (observedPeerConnection) {
|
|
458
|
+
if (observedInboundTrack) {
|
|
459
|
+
observedInboundTrack.muted = false;
|
|
460
|
+
observedPeerConnection?.emit('unmuted-inbound-track', observedInboundTrack);
|
|
461
|
+
}
|
|
462
|
+
else if (observedOutboundTrack) {
|
|
463
|
+
observedOutboundTrack.muted = false;
|
|
464
|
+
observedPeerConnection?.emit('unmuted-outbound-track', observedOutboundTrack);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
else if (postBuffer) {
|
|
468
|
+
postBuffer.push(event);
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
logger.warn('Received MEDIA_TRACK_UNMUTED event without a corresponding observedPeerConnection or observedTrack: %o', event);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
break;
|
|
475
|
+
}
|
|
476
|
+
case ClientEventTypes_1.ClientEventTypes.ICE_CONNECTION_STATE_CHANGED: {
|
|
477
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
478
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.iceConnectionState && typeof payload.iceConnectionState === 'string') {
|
|
479
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
480
|
+
if (observedPeerConnection) {
|
|
481
|
+
observedPeerConnection.iceConnectionState = payload.iceConnectionState;
|
|
482
|
+
observedPeerConnection.emit('iceconnectionstatechange', {
|
|
483
|
+
state: payload.iceConnectionState,
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
else if (postBuffer) {
|
|
487
|
+
postBuffer.push(event);
|
|
488
|
+
}
|
|
489
|
+
else {
|
|
490
|
+
logger.warn('Received ICE_CONNECTION_STATE_CHANGED event without a corresponding observedPeerConnection: %o', event);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
break;
|
|
494
|
+
}
|
|
495
|
+
case ClientEventTypes_1.ClientEventTypes.ICE_GATHERING_STATE_CHANGED: {
|
|
496
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
497
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.iceGatheringState && typeof payload.iceGatheringState === 'string') {
|
|
498
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
499
|
+
if (observedPeerConnection) {
|
|
500
|
+
observedPeerConnection.iceGatheringState = payload.iceGatheringState;
|
|
501
|
+
observedPeerConnection.emit('icegatheringstatechange', {
|
|
502
|
+
state: payload.iceGatheringState,
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
else if (postBuffer) {
|
|
506
|
+
postBuffer.push(event);
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
logger.warn('Received ICE_GATHERING_STATE_CHANGED event without a corresponding observedPeerConnection: %o', event);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
break;
|
|
513
|
+
}
|
|
514
|
+
case ClientEventTypes_1.ClientEventTypes.PEER_CONNECTION_STATE_CHANGED: {
|
|
515
|
+
const payload = (0, utils_1.parseJsonAs)(event.payload);
|
|
516
|
+
if (payload?.peerConnectionId && typeof payload.peerConnectionId === 'string' && payload?.peerConnectionState && typeof payload.peerConnectionState === 'string') {
|
|
517
|
+
const observedPeerConnection = this.observedPeerConnections.get(payload.peerConnectionId);
|
|
518
|
+
if (observedPeerConnection) {
|
|
519
|
+
observedPeerConnection.connectionState = payload.peerConnectionState;
|
|
520
|
+
observedPeerConnection.emit('connectionstatechange', {
|
|
521
|
+
state: payload.peerConnectionState,
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
else if (postBuffer) {
|
|
525
|
+
postBuffer.push(event);
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
logger.warn('Received PEER_CONNECTION_STATE_CHANGED event without a corresponding observedPeerConnection: %o', event);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
285
531
|
break;
|
|
286
532
|
}
|
|
287
533
|
}
|
|
288
|
-
this.
|
|
534
|
+
this.emit('clientEvent', event);
|
|
535
|
+
}
|
|
536
|
+
injectMetaData(metaData) {
|
|
537
|
+
if (this.closed)
|
|
538
|
+
return;
|
|
539
|
+
if (!this._injections.clientMetaItems)
|
|
540
|
+
this._injections.clientMetaItems = [];
|
|
541
|
+
this._injections.clientMetaItems.push(metaData);
|
|
542
|
+
}
|
|
543
|
+
injectEvent(event) {
|
|
544
|
+
if (this.closed)
|
|
545
|
+
return;
|
|
546
|
+
if (!this._injections.clientEvents)
|
|
547
|
+
this._injections.clientEvents = [];
|
|
548
|
+
this._injections.clientEvents.push(event);
|
|
549
|
+
}
|
|
550
|
+
injectIssue(issue) {
|
|
551
|
+
if (this.closed)
|
|
552
|
+
return;
|
|
553
|
+
if (!this._injections.clientIssues)
|
|
554
|
+
this._injections.clientIssues = [];
|
|
555
|
+
this._injections.clientIssues.push(issue);
|
|
556
|
+
}
|
|
557
|
+
injectExtensionStat(stat) {
|
|
558
|
+
if (this.closed)
|
|
559
|
+
return;
|
|
560
|
+
if (!this._injections.extensionStats)
|
|
561
|
+
this._injections.extensionStats = [];
|
|
562
|
+
this._injections.extensionStats.push(stat);
|
|
563
|
+
}
|
|
564
|
+
injectAttachment(key, value) {
|
|
565
|
+
if (this.closed)
|
|
566
|
+
return;
|
|
567
|
+
if (!this._injections.attachments)
|
|
568
|
+
this._injections.attachments = {};
|
|
569
|
+
this._injections.attachments[key] = value;
|
|
289
570
|
}
|
|
290
571
|
addMetadata(metadata) {
|
|
291
572
|
if (this.closed)
|
|
@@ -318,6 +599,7 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
318
599
|
}
|
|
319
600
|
addExtensionStats(stats) {
|
|
320
601
|
this.call.observer.emit('client-extension-stats', this, stats);
|
|
602
|
+
this.emit('extensionStats', stats);
|
|
321
603
|
}
|
|
322
604
|
_updatePeerConnection(sample) {
|
|
323
605
|
let observedPeerConnection = this.observedPeerConnections.get(sample.peerConnectionId);
|
|
@@ -335,5 +617,40 @@ class ObservedClient extends events_1.EventEmitter {
|
|
|
335
617
|
observedPeerConnection.accept(sample);
|
|
336
618
|
return observedPeerConnection;
|
|
337
619
|
}
|
|
620
|
+
_mergeInjections(sample) {
|
|
621
|
+
if (this.closed)
|
|
622
|
+
return sample;
|
|
623
|
+
if (this._injections.clientEvents) {
|
|
624
|
+
if (!sample.clientEvents)
|
|
625
|
+
sample.clientEvents = [];
|
|
626
|
+
sample.clientEvents.push(...this._injections.clientEvents);
|
|
627
|
+
this._injections.clientEvents = undefined;
|
|
628
|
+
}
|
|
629
|
+
if (this._injections.clientIssues) {
|
|
630
|
+
if (!sample.clientIssues)
|
|
631
|
+
sample.clientIssues = [];
|
|
632
|
+
sample.clientIssues.push(...this._injections.clientIssues);
|
|
633
|
+
this._injections.clientIssues = undefined;
|
|
634
|
+
}
|
|
635
|
+
if (this._injections.extensionStats) {
|
|
636
|
+
if (!sample.extensionStats)
|
|
637
|
+
sample.extensionStats = [];
|
|
638
|
+
sample.extensionStats.push(...this._injections.extensionStats);
|
|
639
|
+
this._injections.extensionStats = undefined;
|
|
640
|
+
}
|
|
641
|
+
if (this._injections.attachments) {
|
|
642
|
+
if (!sample.attachments)
|
|
643
|
+
sample.attachments = {};
|
|
644
|
+
Object.assign(sample.attachments, this._injections.attachments);
|
|
645
|
+
this._injections.attachments = undefined;
|
|
646
|
+
}
|
|
647
|
+
if (this._injections.clientMetaItems) {
|
|
648
|
+
if (!sample.clientMetaItems)
|
|
649
|
+
sample.clientMetaItems = [];
|
|
650
|
+
sample.clientMetaItems.push(...this._injections.clientMetaItems);
|
|
651
|
+
this._injections.clientMetaItems = undefined;
|
|
652
|
+
}
|
|
653
|
+
return sample;
|
|
654
|
+
}
|
|
338
655
|
}
|
|
339
656
|
exports.ObservedClient = ObservedClient;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { ObservedCertificate } from './webrtc/ObservedCertificate';
|
|
2
|
+
import { ObservedClient, ObservedClientEvents } from './ObservedClient';
|
|
3
|
+
import { ObservedCodec } from './webrtc/ObservedCodec';
|
|
4
|
+
import { ObservedDataChannel } from './webrtc/ObservedDataChannel';
|
|
5
|
+
import { ObservedIceCandidate } from './webrtc/ObservedIceCandidate';
|
|
6
|
+
import { ObservedIceCandidatePair } from './webrtc/ObservedIceCandidatePair';
|
|
7
|
+
import { ObservedIceTransport } from './webrtc/ObservedIceTransport';
|
|
8
|
+
import { ObservedInboundRtp } from './webrtc/ObservedInboundRtp';
|
|
9
|
+
import { ObservedInboundTrack } from './webrtc/ObservedInboundTrack';
|
|
10
|
+
import { ObservedMediaPlayout } from './webrtc/ObservedMediaPlayout';
|
|
11
|
+
import { ObservedMediaSource } from './webrtc/ObservedMediaSource';
|
|
12
|
+
import { ObservedOutboundRtp } from './webrtc/ObservedOutboundRtp';
|
|
13
|
+
import { ObservedOutboundTrack } from './webrtc/ObservedOutboundTrack';
|
|
14
|
+
import { ObservedPeerConnection } from './webrtc/ObservedPeerConnection';
|
|
15
|
+
import { ClientIssue, ClientMetaData, ExtensionStat } from './schema/ClientSample';
|
|
16
|
+
export declare class ObservedClientEventMonitor<AppContext, ClientAppData extends Record<string, unknown> = Record<string, unknown>> {
|
|
17
|
+
readonly observedClient: ObservedClient<ClientAppData>;
|
|
18
|
+
readonly context: AppContext;
|
|
19
|
+
constructor(observedClient: ObservedClient<ClientAppData>, context: AppContext);
|
|
20
|
+
onClientUpdated?: (client: ObservedClient, event: ObservedClientEvents['update'][0], ctx: AppContext) => void;
|
|
21
|
+
private _onClientUpdated;
|
|
22
|
+
onClientClosed?: (client: ObservedClient, ctx: AppContext) => void;
|
|
23
|
+
private _onClientClosed;
|
|
24
|
+
onPeerConnectionAdded?: (peerConnection: ObservedPeerConnection, ctx: AppContext) => void;
|
|
25
|
+
private _onPeerConnconnectionAdded;
|
|
26
|
+
onPeerConnectionRemoved?: (peerConnection: ObservedPeerConnection, ctx: AppContext) => void;
|
|
27
|
+
private _onPeerConnectionRemoved;
|
|
28
|
+
onCertificateAdded?: (certificate: ObservedCertificate, ctx: AppContext) => void;
|
|
29
|
+
private _onCertificateAdded;
|
|
30
|
+
onCertificateRemoved?: (certificate: ObservedCertificate, ctx: AppContext) => void;
|
|
31
|
+
private _onCertificateRemoved;
|
|
32
|
+
onInboundTrackAdded?: (inboundTrack: ObservedInboundTrack, ctx: AppContext) => void;
|
|
33
|
+
private _onInboundTrackAdded;
|
|
34
|
+
onInboundTrackRemoved?: (inboundTrack: ObservedInboundTrack, ctx: AppContext) => void;
|
|
35
|
+
private _onInboundTrackRemoved;
|
|
36
|
+
onOutboundTrackAdded?: (outboundTrack: ObservedOutboundTrack, ctx: AppContext) => void;
|
|
37
|
+
private _onOutboundTrackAdded;
|
|
38
|
+
onOutboundTrackRemoved?: (outboundTrack: ObservedOutboundTrack, ctx: AppContext) => void;
|
|
39
|
+
private _onOutboundTrackRemoved;
|
|
40
|
+
onInboundRtpAdded?: (inboundRtp: ObservedInboundRtp, ctx: AppContext) => void;
|
|
41
|
+
private _onInboundRtpAdded;
|
|
42
|
+
onInboundRtpRemoved?: (inboundRtp: ObservedInboundRtp, ctx: AppContext) => void;
|
|
43
|
+
private _onInboundRtpRemoved;
|
|
44
|
+
onOutboundRtpAdded?: (outboundRtp: ObservedOutboundRtp, ctx: AppContext) => void;
|
|
45
|
+
private _onOutboundRtpAdded;
|
|
46
|
+
onOutboundRtpRemoved?: (outboundRtp: ObservedOutboundRtp, ctx: AppContext) => void;
|
|
47
|
+
private _onOutboundRtpRemoved;
|
|
48
|
+
onDataChannelAdded?: (dataChannel: ObservedDataChannel, ctx: AppContext) => void;
|
|
49
|
+
private _onDataChannelAdded;
|
|
50
|
+
onDataChannelRemoved?: (dataChannel: ObservedDataChannel, ctx: AppContext) => void;
|
|
51
|
+
private _onDataChannelRemoved;
|
|
52
|
+
onAddedIceTransport?: (iceTransport: ObservedIceTransport, ctx: AppContext) => void;
|
|
53
|
+
private _onAddedIceTransport;
|
|
54
|
+
onRemovedIceTransport?: (iceTransport: ObservedIceTransport, ctx: AppContext) => void;
|
|
55
|
+
private _onRemovedIceTransport;
|
|
56
|
+
onIceCandidateAdded?: (iceCandidate: ObservedIceCandidate, ctx: AppContext) => void;
|
|
57
|
+
private _onIceCandidateAdded;
|
|
58
|
+
onIceCandidateRemoved?: (iceCandidate: ObservedIceCandidate, ctx: AppContext) => void;
|
|
59
|
+
private _onIceCandidateRemoved;
|
|
60
|
+
onAddedIceCandidatePair?: (candidatePair: ObservedIceCandidatePair, ctx: AppContext) => void;
|
|
61
|
+
private _onAddedIceCandidatePair;
|
|
62
|
+
onRemovedIceCandidatePair?: (candidatePair: ObservedIceCandidatePair, ctx: AppContext) => void;
|
|
63
|
+
private _onRemovedIceCandidatePair;
|
|
64
|
+
onAddedMediaCodec?: (codec: ObservedCodec, ctx: AppContext) => void;
|
|
65
|
+
private _onAddedMediaCodec;
|
|
66
|
+
onRemovedMediaCodec?: (codec: ObservedCodec, ctx: AppContext) => void;
|
|
67
|
+
private _onRemovedMediaCodec;
|
|
68
|
+
onAddedMediaPlayout?: (mediaPlayout: ObservedMediaPlayout, ctx: AppContext) => void;
|
|
69
|
+
private _onAddedMediaPlayout;
|
|
70
|
+
onRemovedMediaPlayout?: (mediaPlayout: ObservedMediaPlayout, ctx: AppContext) => void;
|
|
71
|
+
private _onRemovedMediaPlayout;
|
|
72
|
+
onMediaSourceAdded?: (mediaSource: ObservedMediaSource, ctx: AppContext) => void;
|
|
73
|
+
private _onMediaSourceAdded;
|
|
74
|
+
onMediaSourceRemoved?: (mediaSource: ObservedMediaSource, ctx: AppContext) => void;
|
|
75
|
+
private _onMediaSourceRemoved;
|
|
76
|
+
onClientIssue?: (issue: ClientIssue, ctx: AppContext) => void;
|
|
77
|
+
private _onClientIssue;
|
|
78
|
+
onClientMetadata?: (metadata: ClientMetaData, ctx: AppContext) => void;
|
|
79
|
+
private _onClientMetadata;
|
|
80
|
+
onClientExtensionStats?: (extensionStats: ExtensionStat, ctx: AppContext) => void;
|
|
81
|
+
private _onClientExtensionStats;
|
|
82
|
+
onClientJoined?: (client: ObservedClient, ctx: AppContext) => void;
|
|
83
|
+
private _onClientJoined;
|
|
84
|
+
onClientLeft?: (client: ObservedClient, ctx: AppContext) => void;
|
|
85
|
+
private _onClientLeft;
|
|
86
|
+
onUserMediaError?: (error: string, observedClient: ObservedClient, ctx: AppContext) => void;
|
|
87
|
+
private _onUserMediaError;
|
|
88
|
+
onUsingTurn?: (client: ObservedClient, ctx: AppContext) => void;
|
|
89
|
+
private _onUsingTurn;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=ObservedClientEventMonitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservedClientEventMonitor.d.ts","sourceRoot":"","sources":["../src/ObservedClientEventMonitor.ts"],"names":[],"mappings":"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"}
|