@observertc/observer-js 0.40.14 → 0.40.16
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/monitors/CallSummary.d.ts +3 -3
- package/lib/monitors/CallSummary.d.ts.map +1 -1
- package/lib/monitors/TurnUsageMonitor.d.ts +11 -0
- package/lib/monitors/TurnUsageMonitor.d.ts.map +1 -1
- package/lib/monitors/TurnUsageMonitor.js +25 -0
- package/package.json +1 -1
- package/src/monitors/CallSummary.ts +3 -3
- package/src/monitors/TurnUsageMonitor.ts +40 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface ClientIssue {
|
|
1
|
+
export interface ClientIssue extends Record<string, unknown> {
|
|
2
2
|
severity: 'critical' | 'major' | 'minor';
|
|
3
3
|
timestamp: number;
|
|
4
4
|
description?: string;
|
|
@@ -6,7 +6,7 @@ export interface ClientIssue {
|
|
|
6
6
|
trackId?: string;
|
|
7
7
|
attachments?: Record<string, unknown>;
|
|
8
8
|
}
|
|
9
|
-
export interface ClientSummary {
|
|
9
|
+
export interface ClientSummary extends Record<string, unknown> {
|
|
10
10
|
clientId: string;
|
|
11
11
|
mediaUnitId: string;
|
|
12
12
|
userId?: string;
|
|
@@ -21,7 +21,7 @@ export interface ClientSummary {
|
|
|
21
21
|
usedTurn: boolean;
|
|
22
22
|
issues: ClientIssue[];
|
|
23
23
|
}
|
|
24
|
-
export interface CallSummary {
|
|
24
|
+
export interface CallSummary extends Record<string, unknown> {
|
|
25
25
|
serviceId: string;
|
|
26
26
|
roomId: string;
|
|
27
27
|
callId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallSummary.d.ts","sourceRoot":"","sources":["../../src/monitors/CallSummary.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
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"}
|
|
@@ -16,6 +16,15 @@ export type TurnUsage = {
|
|
|
16
16
|
totalPacketsSent: number;
|
|
17
17
|
totalPacketsReceived: number;
|
|
18
18
|
};
|
|
19
|
+
export type TurnStats = {
|
|
20
|
+
turnIp: string;
|
|
21
|
+
totalBytesSent: number;
|
|
22
|
+
totalBytesReceived: number;
|
|
23
|
+
totalPacketsSent: number;
|
|
24
|
+
totalPacketsReceived: number;
|
|
25
|
+
deltaBytesSent: number;
|
|
26
|
+
deltaBytesReceived: number;
|
|
27
|
+
};
|
|
19
28
|
export declare interface TurnUsageMonitor {
|
|
20
29
|
on<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
21
30
|
off<U extends keyof TurnUsageMonitorEvents>(event: U, listener: (...args: TurnUsageMonitorEvents[U]) => void): this;
|
|
@@ -25,8 +34,10 @@ export declare interface TurnUsageMonitor {
|
|
|
25
34
|
export declare class TurnUsageMonitor extends EventEmitter {
|
|
26
35
|
private readonly _connections;
|
|
27
36
|
private readonly _turnUsage;
|
|
37
|
+
private readonly _stats;
|
|
28
38
|
private _closed;
|
|
29
39
|
constructor();
|
|
40
|
+
getStats(): TurnStats[];
|
|
30
41
|
addPeerConnection(peerConnection: ObservedPeerConnection): void;
|
|
31
42
|
removePeerConnection(peerConnection: ObservedPeerConnection): void;
|
|
32
43
|
get turnIps(): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnUsageMonitor.d.ts","sourceRoot":"","sources":["../../src/monitors/TurnUsageMonitor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,EAAE,CAAC;IACV,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;IACpB,iBAAiB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAC5C,oBAAoB,EAAE,CAAC,sBAAsB,CAAC,CAAC;CAC/C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC7B,CAAA;AAQD,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACxC,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACnH,GAAG,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACpH,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACrH,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACpG;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;
|
|
1
|
+
{"version":3,"file":"TurnUsageMonitor.d.ts","sourceRoot":"","sources":["../../src/monitors/TurnUsageMonitor.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE,EAAE,CAAC;IACV,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;IACpB,iBAAiB,EAAE,CAAC,sBAAsB,CAAC,CAAC;IAC5C,oBAAoB,EAAE,CAAC,sBAAsB,CAAC,CAAC;CAC/C,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;CAC7B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC3B,CAAA;AAQD,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACxC,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACnH,GAAG,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACpH,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IACrH,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACpG;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IAEvD,OAAO,CAAC,OAAO,CAAS;;IAKjB,QAAQ,IAAI,SAAS,EAAE;IA6BvB,iBAAiB,CAAC,cAAc,EAAE,sBAAsB;IA4CxD,oBAAoB,CAAC,cAAc,EAAE,sBAAsB;IAelE,IAAW,OAAO,aAEjB;IAED,IAAW,eAAe,6BAEzB;IAEM,QAAQ,CAAC,MAAM,EAAE,MAAM;IAI9B,IAAW,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAUxD;IAED,IAAW,MAAM,YAEhB;IAEM,KAAK;CAMZ"}
|
|
@@ -7,8 +7,33 @@ class TurnUsageMonitor extends events_1.EventEmitter {
|
|
|
7
7
|
super();
|
|
8
8
|
this._connections = new Map();
|
|
9
9
|
this._turnUsage = new Map();
|
|
10
|
+
this._stats = new Map();
|
|
10
11
|
this._closed = false;
|
|
11
12
|
}
|
|
13
|
+
getStats() {
|
|
14
|
+
var _a;
|
|
15
|
+
const result = [];
|
|
16
|
+
for (const [turnIp, usage] of this._turnUsage) {
|
|
17
|
+
const stats = (_a = this._stats.get(turnIp)) !== null && _a !== void 0 ? _a : {
|
|
18
|
+
turnIp,
|
|
19
|
+
totalBytesSent: 0,
|
|
20
|
+
totalBytesReceived: 0,
|
|
21
|
+
totalPacketsSent: 0,
|
|
22
|
+
totalPacketsReceived: 0,
|
|
23
|
+
deltaBytesSent: 0,
|
|
24
|
+
deltaBytesReceived: 0,
|
|
25
|
+
};
|
|
26
|
+
stats.deltaBytesSent = usage.totalBytesSent - stats.totalBytesSent;
|
|
27
|
+
stats.deltaBytesReceived = usage.totalBytesReceived - stats.totalBytesReceived;
|
|
28
|
+
stats.totalBytesSent = usage.totalBytesSent;
|
|
29
|
+
stats.totalBytesReceived = usage.totalBytesReceived;
|
|
30
|
+
stats.totalPacketsSent = usage.totalPacketsSent;
|
|
31
|
+
stats.totalPacketsReceived = usage.totalPacketsReceived;
|
|
32
|
+
this._stats.set(turnIp, stats);
|
|
33
|
+
result.push(stats);
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
12
37
|
addPeerConnection(peerConnection) {
|
|
13
38
|
if (this.closed)
|
|
14
39
|
return;
|
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export interface ClientIssue {
|
|
1
|
+
export interface ClientIssue extends Record<string, unknown> {
|
|
2
2
|
severity: 'critical' | 'major' | 'minor';
|
|
3
3
|
timestamp: number;
|
|
4
4
|
description?: string;
|
|
@@ -7,7 +7,7 @@ export interface ClientIssue {
|
|
|
7
7
|
attachments?: Record<string, unknown>,
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export interface ClientSummary {
|
|
10
|
+
export interface ClientSummary extends Record<string, unknown> {
|
|
11
11
|
clientId: string;
|
|
12
12
|
mediaUnitId: string;
|
|
13
13
|
userId?: string;
|
|
@@ -23,7 +23,7 @@ export interface ClientSummary {
|
|
|
23
23
|
issues: ClientIssue[];
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export interface CallSummary {
|
|
26
|
+
export interface CallSummary extends Record<string, unknown> {
|
|
27
27
|
serviceId: string;
|
|
28
28
|
roomId: string;
|
|
29
29
|
callId: string;
|
|
@@ -19,6 +19,16 @@ export type TurnUsage = {
|
|
|
19
19
|
totalPacketsReceived: number;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
export type TurnStats = {
|
|
23
|
+
turnIp: string;
|
|
24
|
+
totalBytesSent: number;
|
|
25
|
+
totalBytesReceived: number;
|
|
26
|
+
totalPacketsSent: number;
|
|
27
|
+
totalPacketsReceived: number;
|
|
28
|
+
deltaBytesSent: number;
|
|
29
|
+
deltaBytesReceived: number;
|
|
30
|
+
}
|
|
31
|
+
|
|
22
32
|
type ObservedConnection = {
|
|
23
33
|
peerConnection: ObservedPeerConnection,
|
|
24
34
|
onUpdate: (...e: ObservedICEEvents['update']) => void;
|
|
@@ -35,12 +45,42 @@ export declare interface TurnUsageMonitor {
|
|
|
35
45
|
export class TurnUsageMonitor extends EventEmitter {
|
|
36
46
|
private readonly _connections = new Map<string, ObservedConnection>();
|
|
37
47
|
private readonly _turnUsage = new Map<string, TurnUsage>();
|
|
48
|
+
private readonly _stats = new Map<string, TurnStats>();
|
|
38
49
|
|
|
39
50
|
private _closed = false;
|
|
40
51
|
public constructor() {
|
|
41
52
|
super();
|
|
42
53
|
}
|
|
43
54
|
|
|
55
|
+
public getStats(): TurnStats[] {
|
|
56
|
+
const result: TurnStats[] = [];
|
|
57
|
+
|
|
58
|
+
for (const [ turnIp, usage ] of this._turnUsage) {
|
|
59
|
+
const stats = this._stats.get(turnIp) ?? {
|
|
60
|
+
turnIp,
|
|
61
|
+
totalBytesSent: 0,
|
|
62
|
+
totalBytesReceived: 0,
|
|
63
|
+
totalPacketsSent: 0,
|
|
64
|
+
totalPacketsReceived: 0,
|
|
65
|
+
deltaBytesSent: 0,
|
|
66
|
+
deltaBytesReceived: 0,
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
stats.deltaBytesSent = usage.totalBytesSent - stats.totalBytesSent;
|
|
70
|
+
stats.deltaBytesReceived = usage.totalBytesReceived - stats.totalBytesReceived;
|
|
71
|
+
stats.totalBytesSent = usage.totalBytesSent;
|
|
72
|
+
stats.totalBytesReceived = usage.totalBytesReceived;
|
|
73
|
+
stats.totalPacketsSent = usage.totalPacketsSent;
|
|
74
|
+
stats.totalPacketsReceived = usage.totalPacketsReceived;
|
|
75
|
+
|
|
76
|
+
this._stats.set(turnIp, stats);
|
|
77
|
+
|
|
78
|
+
result.push(stats);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
|
|
44
84
|
public addPeerConnection(peerConnection: ObservedPeerConnection) {
|
|
45
85
|
if (this.closed) return;
|
|
46
86
|
if (this._connections.has(peerConnection.peerConnectionId)) return;
|