@livedigital/client 3.34.0 → 3.34.2
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/dist/engine/index.d.ts +2 -3
- package/dist/engine/network/index.d.ts +1 -0
- package/dist/helpers/common.d.ts +8 -0
- package/dist/index.es.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/engine/handlers/ChannelStateSyncEventHandler/index.ts +3 -0
- package/src/engine/index.ts +5 -2
- package/src/engine/network/index.ts +7 -1
- package/src/helpers/common.ts +20 -0
package/package.json
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
} from './consts';
|
|
27
27
|
import { InconsistenceType, StorageKey } from './types';
|
|
28
28
|
import { CallState } from '../../CallState';
|
|
29
|
+
import { getSDKInstancesMarks } from '../../../helpers/common';
|
|
29
30
|
|
|
30
31
|
const RESTORE_STATE_RECOMMENDED_INTERVAL = 15_000;
|
|
31
32
|
|
|
@@ -114,6 +115,8 @@ class ChannelStateSyncEventHandler {
|
|
|
114
115
|
confirmedInconsistencyResult.missingPeers.forEach((peerId) => {
|
|
115
116
|
this.clientEventEmitter.safeEmit(CLIENT_EVENTS.channelStateInconsistent, {
|
|
116
117
|
peerId,
|
|
118
|
+
peersLoaded: this.network.peersLoaded,
|
|
119
|
+
sdkInstances: getSDKInstancesMarks().length,
|
|
117
120
|
type: InconsistenceType.MissingPeer,
|
|
118
121
|
});
|
|
119
122
|
});
|
package/src/engine/index.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { RtpCapabilities } from 'mediasoup-client/lib/RtpParameters';
|
|
|
4
4
|
import { serializeError } from 'serialize-error';
|
|
5
5
|
import WebRTCIssueDetector from 'webrtc-issue-detector';
|
|
6
6
|
import clientMetaProvider from '../ClientMetaProvider';
|
|
7
|
-
import ConfigService from '../config/ConfigService';
|
|
8
7
|
import { MAX_JOIN_ATTEMPTS, SOCKET_ERROR_CODE_UNAUTHORIZED } from '../constants/common';
|
|
9
8
|
import {
|
|
10
9
|
CHANNEL_EVENTS, CLIENT_EVENTS, INTERNAL_CLIENT_EVENTS, NETWORK_OBSERVER_EVENTS,
|
|
@@ -65,6 +64,7 @@ import ConnectionStatManager from './WebRTCStats/ConnectionStatsManager';
|
|
|
65
64
|
import StatsHandler from './WebRTCStats/StatsHandler';
|
|
66
65
|
import { TransportsWebRTCStats } from './WebRTCStats/types';
|
|
67
66
|
import DataChannelsManager from './network/DataChannelsManager';
|
|
67
|
+
import { markSDKInstance, randomString } from '../helpers/common';
|
|
68
68
|
|
|
69
69
|
@injectable()
|
|
70
70
|
class Engine {
|
|
@@ -80,8 +80,9 @@ class Engine {
|
|
|
80
80
|
|
|
81
81
|
#denoiserInitializing: boolean = false;
|
|
82
82
|
|
|
83
|
+
private mark = randomString();
|
|
84
|
+
|
|
83
85
|
constructor(
|
|
84
|
-
@inject(TOKEN.Config) private readonly config: ConfigService,
|
|
85
86
|
@inject(TOKEN.CallState) private readonly state: CallState,
|
|
86
87
|
@inject(TOKEN.MyPeer) private readonly myPeer: MyPeer,
|
|
87
88
|
@inject(TOKEN.LoggerFactory) loggerFactory: (namespace: string) => Logger,
|
|
@@ -110,6 +111,8 @@ class Engine {
|
|
|
110
111
|
|
|
111
112
|
this.watchNetworkState();
|
|
112
113
|
this.watchDocumentUnload();
|
|
114
|
+
|
|
115
|
+
markSDKInstance(this.mark);
|
|
113
116
|
}
|
|
114
117
|
|
|
115
118
|
get isChannelJoined(): boolean {
|
|
@@ -64,6 +64,8 @@ class Network {
|
|
|
64
64
|
|
|
65
65
|
readonly #logger: Logger;
|
|
66
66
|
|
|
67
|
+
peersLoaded = false;
|
|
68
|
+
|
|
67
69
|
constructor(
|
|
68
70
|
@inject(TOKEN.CallState) private readonly state: CallState,
|
|
69
71
|
@inject(TOKEN.MyPeer) private readonly myPeer: MyPeer,
|
|
@@ -404,7 +406,11 @@ class Network {
|
|
|
404
406
|
}
|
|
405
407
|
|
|
406
408
|
public async getChannelPeers(role?: Role): Promise<{ peers: PeerResponse[] }> {
|
|
407
|
-
|
|
409
|
+
const response = await this.socket.request<{ peers: PeerResponse[] }>(CHANNEL_EVENTS.channelGetPeers, { role });
|
|
410
|
+
|
|
411
|
+
this.peersLoaded = true;
|
|
412
|
+
|
|
413
|
+
return response;
|
|
408
414
|
}
|
|
409
415
|
|
|
410
416
|
private async getParsedTransportStats(transport?: Transport): Promise<TransportStateInfo | undefined> {
|
package/src/helpers/common.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
1
2
|
import { LogLevels } from '../constants/common';
|
|
2
3
|
import { LogLevel } from '../types/common';
|
|
3
4
|
|
|
5
|
+
declare global {
|
|
6
|
+
interface Window {
|
|
7
|
+
_sdkMarks: Set<string>,
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
4
11
|
export const isObject = (object: unknown): object is Record<string, unknown> => (
|
|
5
12
|
object !== null && typeof object === 'object'
|
|
6
13
|
);
|
|
@@ -64,3 +71,16 @@ export function prepareLogLevel(level?: LogLevel): LogLevel {
|
|
|
64
71
|
export function isAnalyticsActive(flag?: boolean): boolean {
|
|
65
72
|
return flag ?? true;
|
|
66
73
|
}
|
|
74
|
+
|
|
75
|
+
export function randomString() {
|
|
76
|
+
return crypto.randomBytes(10).toString('hex');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function markSDKInstance(mark: string) {
|
|
80
|
+
window._sdkMarks = window._sdkMarks || new Set<string>();
|
|
81
|
+
window._sdkMarks.add(mark);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function getSDKInstancesMarks(): string[] {
|
|
85
|
+
return Array.from(window._sdkMarks || []);
|
|
86
|
+
}
|