@observertc/observer-js 0.40.18 → 0.40.20

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.
@@ -102,6 +102,7 @@ export declare class ObservedClient<AppData extends Record<string, unknown> = Re
102
102
  readonly mediaDevices: string[];
103
103
  readonly codecs: string[];
104
104
  readonly userMediaErrors: string[];
105
+ readonly issues: ClientIssue[];
105
106
  readonly ωpendingCreatedTracksTimestamp: Map<string, number>;
106
107
  readonly ωpendingCreatedPeerConnectionTimestamp: Map<string, number>;
107
108
  constructor(_model: ObservedClientModel, call: ObservedCall, appData: AppData);
@@ -1 +1 @@
1
- {"version":3,"file":"ObservedClient.d.ts","sourceRoot":"","sources":["../src/ObservedClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObservedClient.d.ts","sourceRoot":"","sources":["../src/ObservedClient.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,7 @@ class ObservedClient extends events_1.EventEmitter {
58
58
  this.mediaDevices = [];
59
59
  this.codecs = [];
60
60
  this.userMediaErrors = [];
61
+ this.issues = [];
61
62
  this.ωpendingCreatedTracksTimestamp = new Map();
62
63
  this.ωpendingCreatedPeerConnectionTimestamp = new Map();
63
64
  this.setMaxListeners(Infinity);
@@ -151,11 +152,12 @@ class ObservedClient extends events_1.EventEmitter {
151
152
  timestamp: (_a = issue.timestamp) !== null && _a !== void 0 ? _a : Date.now(),
152
153
  attachments: issue.attachments ? JSON.stringify(issue.attachments) : undefined,
153
154
  });
154
- this.emit('issue', issue);
155
155
  }
156
156
  catch (err) {
157
157
  logger.warn(`Error adding client issue: ${err === null || err === void 0 ? void 0 : err.message}`);
158
158
  }
159
+ this.issues.push(issue);
160
+ this.emit('issue', issue);
159
161
  }
160
162
  accept(sample) {
161
163
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
@@ -264,6 +266,7 @@ class ObservedClient extends events_1.EventEmitter {
264
266
  trackId: callEvent.mediaTrackId,
265
267
  attachments: callEvent.attachments ? JSON.parse(callEvent.attachments) : undefined,
266
268
  };
269
+ this.issues.push(issue);
267
270
  this.emit('issue', issue);
268
271
  }
269
272
  catch (err) {
@@ -13,10 +13,12 @@ export interface ClientSummary extends Record<string, unknown> {
13
13
  joined: number;
14
14
  left?: number;
15
15
  durationInMs: number;
16
- avgOutboundAudioBitrate: number;
17
- avgOutboundVideoBitrate: number;
18
- avgInboundAudioBitrate: number;
19
- avgInboundVideoBitrate: number;
16
+ totalOutboundAudioBytes: number;
17
+ totalOutboundVideoBytes: number;
18
+ totalInboundAudioBytes: number;
19
+ totalInboundVideoBytes: number;
20
+ totalDataChannelBytesSent: number;
21
+ totalDataChannelBytesReceived: number;
20
22
  ewmaRttInMs: number;
21
23
  usedTurn: boolean;
22
24
  issues: ClientIssue[];
@@ -1 +1 @@
1
- {"version":3,"file":"CallSummary.d.ts","sourceRoot":"","sources":["../../src/monitors/CallSummary.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,EAAE,aAAa,EAAE,CAAC;CACzB"}
1
+ {"version":3,"file":"CallSummary.d.ts","sourceRoot":"","sources":["../../src/monitors/CallSummary.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yBAAyB,EAAE,MAAM,CAAC;IAClC,6BAA6B,EAAE,MAAM,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,EAAE,aAAa,EAAE,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"CallSummaryMonitor.d.ts","sourceRoot":"","sources":["../../src/monitors/CallSummaryMonitor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,WAAW,EAA8B,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,MAAM,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;CACvB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uCAAuC,CAAC,EAAE,OAAO,CAAC;CAClD,CAAA;AAED,MAAM,CAAC,OAAO,WAAW,kBAAkB;IAC1C,EAAE,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACvH,GAAG,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACxH,IAAI,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACzH,IAAI,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACxG;AAED,qBAAa,kBAAmB,SAAQ,YAAY;aAKlC,MAAM,EAAE,wBAAwB;IAJjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAE7D,OAAO,CAAC,OAAO,CAAS;gBAEP,MAAM,GAAE,wBAA6B;IAK/C,OAAO,CAAC,IAAI,EAAE,YAAY;IA8BjC,OAAO,CAAC,UAAU;IAuElB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,sBAAsB;IAmBvB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAU3D,IAAW,MAAM,YAEhB;IAEM,KAAK;CAMZ"}
1
+ {"version":3,"file":"CallSummaryMonitor.d.ts","sourceRoot":"","sources":["../../src/monitors/CallSummaryMonitor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,WAAW,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,MAAM,MAAM,wBAAwB,GAAG;IACtC,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC;CACvB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACtC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,uCAAuC,CAAC,EAAE,OAAO,CAAC;CAClD,CAAA;AAED,MAAM,CAAC,OAAO,WAAW,kBAAkB;IAC1C,EAAE,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACvH,GAAG,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACxH,IAAI,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACzH,IAAI,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACxG;AAED,qBAAa,kBAAmB,SAAQ,YAAY;aAKlC,MAAM,EAAE,wBAAwB;IAJjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAE7D,OAAO,CAAC,OAAO,CAAS;gBAEP,MAAM,GAAE,wBAA6B;IAK/C,OAAO,CAAC,IAAI,EAAE,YAAY;IA8BjC,OAAO,CAAC,UAAU;IAsElB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,sBAAsB;IAmBvB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAU3D,IAAW,MAAM,YAEhB;IAEM,KAAK;CAMZ"}
@@ -43,10 +43,12 @@ class CallSummaryMonitor extends events_1.EventEmitter {
43
43
  clientId: client.clientId,
44
44
  mediaUnitId: client.mediaUnitId,
45
45
  durationInMs: 0,
46
- avgInboundAudioBitrate: 0,
47
- avgInboundVideoBitrate: 0,
48
- avgOutboundAudioBitrate: 0,
49
- avgOutboundVideoBitrate: 0,
46
+ totalInboundAudioBytes: 0,
47
+ totalInboundVideoBytes: 0,
48
+ totalOutboundAudioBytes: 0,
49
+ totalOutboundVideoBytes: 0,
50
+ totalDataChannelBytesSent: 0,
51
+ totalDataChannelBytesReceived: 0,
50
52
  ewmaRttInMs: 0,
51
53
  joined: client.created,
52
54
  userId: client.userId,
@@ -62,10 +64,6 @@ class CallSummaryMonitor extends events_1.EventEmitter {
62
64
  const onUsingTurn = (usingTurn) => {
63
65
  clientSummary.usedTurn || (clientSummary.usedTurn = usingTurn);
64
66
  };
65
- const onIssue = (issue) => {
66
- ++callSummary.numberOfIssues;
67
- clientSummary.issues.push(issue);
68
- };
69
67
  const onUserMediaError = (error) => {
70
68
  if (!this.config.detectUserMediaIssues)
71
69
  return;
@@ -78,23 +76,25 @@ class CallSummaryMonitor extends events_1.EventEmitter {
78
76
  const onNewPeerConnection = (peerConnection) => this._addPeerConnection(clientSummary, peerConnection);
79
77
  client.on('update', updateClient);
80
78
  client.on('usingturn', onUsingTurn);
81
- client.on('issue', onIssue);
82
79
  client.on('usermediaerror', onUserMediaError);
83
80
  client.on('newpeerconnection', onNewPeerConnection);
84
81
  client.once('close', () => {
85
82
  const now = Date.now();
86
- const elapsedTimeInS = (now - client.created) / 1000;
87
- clientSummary.avgInboundAudioBitrate = (client.totalReceivedAudioBytes * 8) / elapsedTimeInS;
88
- clientSummary.avgInboundVideoBitrate = (client.totalReceivedVideoBytes * 8) / elapsedTimeInS;
89
- clientSummary.avgOutboundAudioBitrate = (client.totalSentAudioBytes * 8) / elapsedTimeInS;
90
- clientSummary.avgOutboundVideoBitrate = (client.totalSentVideoBytes * 8) / elapsedTimeInS;
83
+ clientSummary.totalInboundAudioBytes = client.totalReceivedAudioBytes;
84
+ clientSummary.totalInboundVideoBytes = client.totalReceivedVideoBytes;
85
+ clientSummary.totalOutboundAudioBytes = client.totalSentAudioBytes;
86
+ clientSummary.totalOutboundVideoBytes = client.totalSentVideoBytes;
87
+ clientSummary.totalDataChannelBytesSent = client.totalDataChannelBytesSent;
88
+ clientSummary.totalDataChannelBytesReceived = client.totalDataChannelBytesReceived;
91
89
  clientSummary.durationInMs = now - client.created;
90
+ clientSummary.left = now;
91
+ clientSummary.issues.push(...client.issues);
92
92
  client.off('update', updateClient);
93
93
  client.off('usingturn', onUsingTurn);
94
- client.off('issue', onIssue);
95
94
  client.off('usermediaerror', onUserMediaError);
96
95
  client.off('newpeerconnection', onNewPeerConnection);
97
96
  callSummary.durationInMs += clientSummary.durationInMs;
97
+ callSummary.numberOfIssues += clientSummary.issues.length;
98
98
  });
99
99
  }
100
100
  _addPeerConnection(clientSummary, peerConnection) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@observertc/observer-js",
3
- "version": "0.40.18",
3
+ "version": "0.40.20",
4
4
  "description": "Server Side NodeJS Library for processing ObserveRTC Samples",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -108,6 +108,7 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
108
108
  public readonly mediaDevices: string[] = [];
109
109
  public readonly codecs: string[] = [];
110
110
  public readonly userMediaErrors: string[] = [];
111
+ public readonly issues: ClientIssue[] = [];
111
112
 
112
113
  public readonly ωpendingCreatedTracksTimestamp = new Map<string, number>();
113
114
  public readonly ωpendingCreatedPeerConnectionTimestamp = new Map<string, number>();
@@ -231,11 +232,12 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
231
232
  timestamp: issue.timestamp ?? Date.now(),
232
233
  attachments: issue.attachments ? JSON.stringify(issue.attachments): undefined,
233
234
  });
234
- this.emit('issue', issue);
235
235
  } catch (err) {
236
236
  logger.warn(`Error adding client issue: ${(err as Error)?.message}`);
237
237
  }
238
-
238
+
239
+ this.issues.push(issue);
240
+ this.emit('issue', issue);
239
241
  }
240
242
 
241
243
  public accept(sample: ClientSample): void {
@@ -433,6 +435,7 @@ export class ObservedClient<AppData extends Record<string, unknown> = Record<str
433
435
  attachments: callEvent.attachments ? JSON.parse(callEvent.attachments) : undefined,
434
436
  };
435
437
 
438
+ this.issues.push(issue);
436
439
  this.emit('issue', issue);
437
440
  } catch (err) {
438
441
  logger.warn(`Error parsing client issue: ${(err as Error)?.message}`);
@@ -14,10 +14,12 @@ export interface ClientSummary extends Record<string, unknown> {
14
14
  joined: number;
15
15
  left?: number;
16
16
  durationInMs: number;
17
- avgOutboundAudioBitrate: number,
18
- avgOutboundVideoBitrate: number,
19
- avgInboundAudioBitrate: number,
20
- avgInboundVideoBitrate: number,
17
+ totalOutboundAudioBytes: number,
18
+ totalOutboundVideoBytes: number,
19
+ totalInboundAudioBytes: number,
20
+ totalInboundVideoBytes: number,
21
+ totalDataChannelBytesSent: number,
22
+ totalDataChannelBytesReceived: number,
21
23
  ewmaRttInMs: number,
22
24
  usedTurn: boolean;
23
25
  issues: ClientIssue[];
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from 'events';
2
- import { CallSummary, ClientIssue, ClientSummary } from './CallSummary';
2
+ import { CallSummary, ClientSummary } from './CallSummary';
3
3
  import { ObservedCall } from '../ObservedCall';
4
4
  import { ObservedClient } from '../ObservedClient';
5
5
  import { ObservedOutboundTrack } from '../ObservedOutboundTrack';
@@ -68,10 +68,12 @@ export class CallSummaryMonitor extends EventEmitter {
68
68
  clientId: client.clientId,
69
69
  mediaUnitId: client.mediaUnitId,
70
70
  durationInMs: 0,
71
- avgInboundAudioBitrate: 0,
72
- avgInboundVideoBitrate: 0,
73
- avgOutboundAudioBitrate: 0,
74
- avgOutboundVideoBitrate: 0,
71
+ totalInboundAudioBytes: 0,
72
+ totalInboundVideoBytes: 0,
73
+ totalOutboundAudioBytes: 0,
74
+ totalOutboundVideoBytes: 0,
75
+ totalDataChannelBytesSent: 0,
76
+ totalDataChannelBytesReceived: 0,
75
77
  ewmaRttInMs: 0,
76
78
  joined: client.created,
77
79
  userId: client.userId,
@@ -91,12 +93,6 @@ export class CallSummaryMonitor extends EventEmitter {
91
93
  clientSummary.usedTurn ||= usingTurn;
92
94
  };
93
95
 
94
- const onIssue = (issue: ClientIssue) => {
95
- ++callSummary.numberOfIssues;
96
- clientSummary.issues.push(issue);
97
-
98
- };
99
-
100
96
  const onUserMediaError = (error: string) => {
101
97
  if (!this.config.detectUserMediaIssues) return;
102
98
 
@@ -111,25 +107,28 @@ export class CallSummaryMonitor extends EventEmitter {
111
107
 
112
108
  client.on('update', updateClient);
113
109
  client.on('usingturn', onUsingTurn);
114
- client.on('issue', onIssue);
115
110
  client.on('usermediaerror', onUserMediaError);
116
111
  client.on('newpeerconnection', onNewPeerConnection);
117
112
  client.once('close', () => {
118
113
  const now = Date.now();
119
- const elapsedTimeInS = (now - client.created) / 1000;
120
114
 
121
- clientSummary.avgInboundAudioBitrate = (client.totalReceivedAudioBytes * 8) / elapsedTimeInS;
122
- clientSummary.avgInboundVideoBitrate = (client.totalReceivedVideoBytes * 8) / elapsedTimeInS;
123
- clientSummary.avgOutboundAudioBitrate = (client.totalSentAudioBytes * 8) / elapsedTimeInS;
124
- clientSummary.avgOutboundVideoBitrate = (client.totalSentVideoBytes * 8) / elapsedTimeInS;
115
+ clientSummary.totalInboundAudioBytes = client.totalReceivedAudioBytes;
116
+ clientSummary.totalInboundVideoBytes = client.totalReceivedVideoBytes;
117
+ clientSummary.totalOutboundAudioBytes = client.totalSentAudioBytes;
118
+ clientSummary.totalOutboundVideoBytes = client.totalSentVideoBytes;
119
+ clientSummary.totalDataChannelBytesSent = client.totalDataChannelBytesSent;
120
+ clientSummary.totalDataChannelBytesReceived = client.totalDataChannelBytesReceived;
125
121
  clientSummary.durationInMs = now - client.created;
122
+ clientSummary.left = now;
123
+ clientSummary.issues.push(...client.issues);
124
+
126
125
  client.off('update', updateClient);
127
126
  client.off('usingturn', onUsingTurn);
128
- client.off('issue', onIssue);
129
127
  client.off('usermediaerror', onUserMediaError);
130
128
  client.off('newpeerconnection', onNewPeerConnection);
131
129
 
132
130
  callSummary.durationInMs += clientSummary.durationInMs;
131
+ callSummary.numberOfIssues += clientSummary.issues.length;
133
132
  });
134
133
  }
135
134