livekit-client 1.15.11 → 2.0.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 +21 -17
- package/dist/livekit-client.esm.mjs +1573 -1479
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/api/SignalClient.d.ts +0 -2
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/options.d.ts +3 -9
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/proto/livekit_models_pb.d.ts +47 -0
- package/dist/src/proto/livekit_models_pb.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +1 -0
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts +12 -15
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/defaults.d.ts.map +1 -1
- package/dist/src/room/events.d.ts +0 -4
- package/dist/src/room/events.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts +8 -25
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/Participant.d.ts +6 -10
- package/dist/src/room/participant/Participant.d.ts.map +1 -1
- package/dist/src/room/participant/RemoteParticipant.d.ts +9 -6
- package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -1
- package/dist/src/room/timers.d.ts +4 -5
- package/dist/src/room/timers.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts +3 -3
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts +2 -2
- package/dist/src/room/track/RemoteTrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/Track.d.ts +5 -0
- package/dist/src/room/track/Track.d.ts.map +1 -1
- package/dist/src/room/track/options.d.ts +0 -5
- package/dist/src/room/track/options.d.ts.map +1 -1
- package/dist/src/room/types.d.ts +11 -3
- package/dist/src/room/types.d.ts.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/ts4.2/src/api/SignalClient.d.ts +0 -2
- package/dist/ts4.2/src/index.d.ts +3 -3
- package/dist/ts4.2/src/options.d.ts +3 -9
- package/dist/ts4.2/src/proto/livekit_models_pb.d.ts +47 -0
- package/dist/ts4.2/src/room/RTCEngine.d.ts +1 -0
- package/dist/ts4.2/src/room/Room.d.ts +12 -15
- package/dist/ts4.2/src/room/events.d.ts +0 -4
- package/dist/ts4.2/src/room/participant/LocalParticipant.d.ts +8 -25
- package/dist/ts4.2/src/room/participant/Participant.d.ts +6 -10
- package/dist/ts4.2/src/room/participant/RemoteParticipant.d.ts +9 -6
- package/dist/ts4.2/src/room/timers.d.ts +4 -5
- package/dist/ts4.2/src/room/track/LocalVideoTrack.d.ts +3 -3
- package/dist/ts4.2/src/room/track/RemoteTrackPublication.d.ts +2 -2
- package/dist/ts4.2/src/room/track/Track.d.ts +5 -0
- package/dist/ts4.2/src/room/track/options.d.ts +0 -5
- package/dist/ts4.2/src/room/types.d.ts +11 -3
- package/dist/ts4.2/src/version.d.ts +1 -1
- package/package.json +8 -7
- package/src/api/SignalClient.ts +2 -6
- package/src/e2ee/E2eeManager.ts +2 -2
- package/src/index.ts +2 -4
- package/src/options.ts +3 -10
- package/src/proto/livekit_models_pb.ts +66 -0
- package/src/room/RTCEngine.ts +6 -1
- package/src/room/Room.ts +145 -114
- package/src/room/defaults.ts +1 -5
- package/src/room/events.ts +0 -5
- package/src/room/participant/LocalParticipant.ts +36 -77
- package/src/room/participant/Participant.ts +23 -24
- package/src/room/participant/RemoteParticipant.ts +27 -24
- package/src/room/track/LocalVideoTrack.test.ts +1 -1
- package/src/room/track/LocalVideoTrack.ts +11 -7
- package/src/room/track/RemoteTrackPublication.ts +2 -7
- package/src/room/track/Track.ts +10 -1
- package/src/room/track/options.ts +0 -6
- package/src/room/types.ts +11 -4
- package/src/version.ts +1 -1
@@ -1,10 +1,10 @@
|
|
1
1
|
import type { SignalClient } from '../../api/SignalClient';
|
2
|
-
import { VideoLayer
|
2
|
+
import { VideoLayer } from '../../proto/livekit_models_pb';
|
3
3
|
import { SubscribedCodec, SubscribedQuality } from '../../proto/livekit_rtc_pb';
|
4
4
|
import type { VideoSenderStats } from '../stats';
|
5
5
|
import type { LoggerOptions } from '../types';
|
6
6
|
import LocalTrack from './LocalTrack';
|
7
|
-
import { Track } from './Track';
|
7
|
+
import { Track, VideoQuality } from './Track';
|
8
8
|
import type { VideoCaptureOptions, VideoCodec } from './options';
|
9
9
|
import type { TrackProcessor } from './processor/types';
|
10
10
|
export declare class SimulcastTrackInfo {
|
@@ -41,7 +41,7 @@ export default class LocalVideoTrack extends LocalTrack {
|
|
41
41
|
setDeviceId(deviceId: ConstrainDOMString): Promise<boolean>;
|
42
42
|
restartTrack(options?: VideoCaptureOptions): Promise<void>;
|
43
43
|
setProcessor(processor: TrackProcessor<Track.Kind>, showProcessedStreamLocally?: boolean): Promise<void>;
|
44
|
-
addSimulcastTrack(codec: VideoCodec, encodings?: RTCRtpEncodingParameters[]): SimulcastTrackInfo;
|
44
|
+
addSimulcastTrack(codec: VideoCodec, encodings?: RTCRtpEncodingParameters[]): SimulcastTrackInfo | undefined;
|
45
45
|
setSimulcastTrackSender(codec: VideoCodec, sender: RTCRtpSender): void;
|
46
46
|
/**
|
47
47
|
* @internal
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import { SubscriptionError, TrackInfo
|
1
|
+
import { SubscriptionError, TrackInfo } from '../../proto/livekit_models_pb';
|
2
2
|
import type { LoggerOptions } from '../types';
|
3
3
|
import type RemoteTrack from './RemoteTrack';
|
4
|
-
import { Track } from './Track';
|
4
|
+
import { Track, VideoQuality } from './Track';
|
5
5
|
import { TrackPublication } from './TrackPublication';
|
6
6
|
export default class RemoteTrackPublication extends TrackPublication {
|
7
7
|
track?: RemoteTrack;
|
@@ -4,6 +4,11 @@ import { StructuredLogger } from '../../logger';
|
|
4
4
|
import { TrackSource, TrackType } from '../../proto/livekit_models_pb';
|
5
5
|
import { StreamState as ProtoStreamState } from '../../proto/livekit_rtc_pb';
|
6
6
|
import type { LoggerOptions } from '../types';
|
7
|
+
export declare enum VideoQuality {
|
8
|
+
LOW = 0,
|
9
|
+
MEDIUM = 1,
|
10
|
+
HIGH = 2
|
11
|
+
}
|
7
12
|
declare const Track_base: new () => TypedEventEmitter<TrackEventCallbacks>;
|
8
13
|
export declare abstract class Track extends Track_base {
|
9
14
|
kind: Track.Kind;
|
@@ -28,11 +28,6 @@ export interface TrackPublishDefaults {
|
|
28
28
|
* as backup. (TBD)
|
29
29
|
*/
|
30
30
|
videoCodec?: VideoCodec;
|
31
|
-
/**
|
32
|
-
* max audio bitrate, defaults to [[AudioPresets.music]]
|
33
|
-
* @deprecated use `audioPreset` instead
|
34
|
-
*/
|
35
|
-
audioBitrate?: number;
|
36
31
|
/**
|
37
32
|
* which audio preset should be used for publishing (audio) tracks
|
38
33
|
* defaults to [[AudioPresets.music]]
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import type RemoteParticipant from './participant/RemoteParticipant';
|
2
1
|
export type SimulationOptions = {
|
3
2
|
publish?: {
|
4
3
|
audio?: boolean;
|
@@ -13,8 +12,17 @@ export type SimulationOptions = {
|
|
13
12
|
};
|
14
13
|
};
|
15
14
|
export type DataPublishOptions = {
|
16
|
-
/**
|
17
|
-
|
15
|
+
/**
|
16
|
+
* whether to send this as reliable or lossy.
|
17
|
+
* For data that you need delivery guarantee (such as chat messages), use Reliable.
|
18
|
+
* For data that should arrive as quickly as possible, but you are ok with dropped
|
19
|
+
* packets, use Lossy.
|
20
|
+
*/
|
21
|
+
reliable?: boolean;
|
22
|
+
/**
|
23
|
+
* the identities of participants who will receive the message, will be sent to every one if empty
|
24
|
+
*/
|
25
|
+
destinationIdentities?: string[];
|
18
26
|
/** the topic under which the message gets published */
|
19
27
|
topic?: string;
|
20
28
|
};
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "livekit-client",
|
3
|
-
"version": "
|
3
|
+
"version": "2.0.0",
|
4
4
|
"description": "JavaScript/TypeScript client SDK for LiveKit",
|
5
5
|
"main": "./dist/livekit-client.umd.js",
|
6
6
|
"unpkg": "./dist/livekit-client.umd.js",
|
@@ -46,8 +46,8 @@
|
|
46
46
|
"webrtc-adapter": "^8.1.1"
|
47
47
|
},
|
48
48
|
"devDependencies": {
|
49
|
-
"@babel/core": "7.23.
|
50
|
-
"@babel/preset-env": "7.23.
|
49
|
+
"@babel/core": "7.23.9",
|
50
|
+
"@babel/preset-env": "7.23.9",
|
51
51
|
"@bufbuild/protoc-gen-es": "^1.3.0",
|
52
52
|
"@changesets/cli": "2.27.1",
|
53
53
|
"@livekit/changesets-changelog-github": "^0.0.4",
|
@@ -73,20 +73,21 @@
|
|
73
73
|
"gh-pages": "6.1.1",
|
74
74
|
"jsdom": "^23.0.0",
|
75
75
|
"prettier": "^3.0.0",
|
76
|
-
"rollup": "4.9.
|
76
|
+
"rollup": "4.9.6",
|
77
77
|
"rollup-plugin-delete": "^2.0.0",
|
78
78
|
"rollup-plugin-re": "1.0.7",
|
79
79
|
"rollup-plugin-typescript2": "0.36.0",
|
80
80
|
"size-limit": "^8.2.4",
|
81
|
-
"typedoc": "0.25.
|
81
|
+
"typedoc": "0.25.7",
|
82
82
|
"typedoc-plugin-no-inherit": "1.4.0",
|
83
83
|
"typescript": "5.3.3",
|
84
|
-
"vite": "5.0.
|
84
|
+
"vite": "5.0.12",
|
85
85
|
"vitest": "^1.0.0"
|
86
86
|
},
|
87
87
|
"scripts": {
|
88
88
|
"build": "rollup --config --bundleConfigAsCjs && rollup --config rollup.config.worker.js --bundleConfigAsCjs && pnpm downlevel-dts",
|
89
|
-
"build:watch": "rollup --watch --config
|
89
|
+
"build:watch": "rollup --watch --config --bundleConfigAsCjs",
|
90
|
+
"build:worker:watch": "rollup --watch --config rollup.config.worker.js --bundleConfigAsCjs",
|
90
91
|
"build-docs": "typedoc",
|
91
92
|
"proto": "protoc --es_out src/proto --es_opt target=ts -I./protocol ./protocol/livekit_rtc.proto ./protocol/livekit_models.proto",
|
92
93
|
"sample": "vite example -c vite.config.mjs",
|
package/src/api/SignalClient.ts
CHANGED
@@ -56,8 +56,6 @@ interface ConnectOpts extends SignalOptions {
|
|
56
56
|
// public options
|
57
57
|
export interface SignalOptions {
|
58
58
|
autoSubscribe: boolean;
|
59
|
-
/** @deprecated */
|
60
|
-
publishOnly?: string;
|
61
59
|
adaptiveStream?: boolean;
|
62
60
|
maxRetries: number;
|
63
61
|
e2eeEnabled: boolean;
|
@@ -396,6 +394,8 @@ export class SignalClient {
|
|
396
394
|
this.log.warn(`websocket closed`, {
|
397
395
|
...this.logContext,
|
398
396
|
reason: ev.reason,
|
397
|
+
code: ev.code,
|
398
|
+
wasClean: ev.wasClean,
|
399
399
|
state: this.state,
|
400
400
|
});
|
401
401
|
this.handleOnClose(ev.reason);
|
@@ -853,10 +853,6 @@ function createConnectionParams(token: string, info: ClientInfo, opts: ConnectOp
|
|
853
853
|
params.set('browser_version', info.browserVersion);
|
854
854
|
}
|
855
855
|
|
856
|
-
if (opts.publishOnly !== undefined) {
|
857
|
-
params.set('publish', opts.publishOnly);
|
858
|
-
}
|
859
|
-
|
860
856
|
if (opts.adaptiveStream) {
|
861
857
|
params.set('adaptive_stream', '1');
|
862
858
|
}
|
package/src/e2ee/E2eeManager.ts
CHANGED
@@ -168,8 +168,8 @@ export class E2EEManager extends (EventEmitter as new () => TypedEventEmitter<E2
|
|
168
168
|
room
|
169
169
|
.on(RoomEvent.ConnectionStateChanged, (state) => {
|
170
170
|
if (state === ConnectionState.Connected) {
|
171
|
-
room.
|
172
|
-
participant.
|
171
|
+
room.remoteParticipants.forEach((participant) => {
|
172
|
+
participant.trackPublications.forEach((pub) => {
|
173
173
|
this.setParticipantCryptorEnabled(
|
174
174
|
pub.trackInfo!.encryption !== Encryption_Type.NONE,
|
175
175
|
participant.identity,
|
package/src/index.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { LogLevel, getLogger, setLogExtension, setLogLevel } from './logger';
|
2
|
-
import { DataPacket_Kind, DisconnectReason
|
2
|
+
import { DataPacket_Kind, DisconnectReason } from './proto/livekit_models_pb';
|
3
3
|
import DefaultReconnectPolicy from './room/DefaultReconnectPolicy';
|
4
|
-
import Room, { ConnectionState
|
4
|
+
import Room, { ConnectionState } from './room/Room';
|
5
5
|
import LocalParticipant from './room/participant/LocalParticipant';
|
6
6
|
import Participant, { ConnectionQuality } from './room/participant/Participant';
|
7
7
|
import type { ParticipantTrackPermission } from './room/participant/ParticipantTrackPermission';
|
@@ -58,7 +58,6 @@ export {
|
|
58
58
|
getLogger,
|
59
59
|
Room,
|
60
60
|
ConnectionState,
|
61
|
-
RoomState,
|
62
61
|
DataPacket_Kind,
|
63
62
|
DisconnectReason,
|
64
63
|
Participant,
|
@@ -73,7 +72,6 @@ export {
|
|
73
72
|
RemoteVideoTrack,
|
74
73
|
RemoteTrackPublication,
|
75
74
|
TrackPublication,
|
76
|
-
VideoQuality,
|
77
75
|
ConnectionQuality,
|
78
76
|
DefaultReconnectPolicy,
|
79
77
|
CriticalTimers,
|
package/src/options.ts
CHANGED
@@ -81,12 +81,11 @@ export interface InternalRoomOptions {
|
|
81
81
|
expSignalLatency?: number;
|
82
82
|
|
83
83
|
/**
|
84
|
-
*
|
85
|
-
*
|
86
|
-
* experimental flag, mix all audio tracks in web audio
|
84
|
+
* mix all audio tracks in web audio, helps to tackle some audio auto playback issues
|
85
|
+
* allows for passing in your own AudioContext instance, too
|
87
86
|
*/
|
88
87
|
|
89
|
-
|
88
|
+
webAudioMix: boolean | WebAudioSettings;
|
90
89
|
|
91
90
|
/**
|
92
91
|
* @experimental
|
@@ -116,12 +115,6 @@ export interface InternalRoomConnectOptions {
|
|
116
115
|
*/
|
117
116
|
rtcConfig?: RTCConfiguration;
|
118
117
|
|
119
|
-
/**
|
120
|
-
* @deprecated
|
121
|
-
* publish only mode
|
122
|
-
*/
|
123
|
-
publishOnly?: string;
|
124
|
-
|
125
118
|
/** specifies how often an initial join connection is allowed to retry (only applicable if server is not reachable) */
|
126
119
|
maxRetries: number;
|
127
120
|
|
@@ -437,6 +437,11 @@ export class Room extends Message<Room> {
|
|
437
437
|
*/
|
438
438
|
activeRecording = false;
|
439
439
|
|
440
|
+
/**
|
441
|
+
* @generated from field: livekit.TimedVersion version = 13;
|
442
|
+
*/
|
443
|
+
version?: TimedVersion;
|
444
|
+
|
440
445
|
constructor(data?: PartialMessage<Room>) {
|
441
446
|
super();
|
442
447
|
proto3.util.initPartial(data, this);
|
@@ -456,6 +461,7 @@ export class Room extends Message<Room> {
|
|
456
461
|
{ no: 9, name: "num_participants", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
|
457
462
|
{ no: 11, name: "num_publishers", kind: "scalar", T: 13 /* ScalarType.UINT32 */ },
|
458
463
|
{ no: 10, name: "active_recording", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
464
|
+
{ no: 13, name: "version", kind: "message", T: TimedVersion },
|
459
465
|
]);
|
460
466
|
|
461
467
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Room {
|
@@ -726,6 +732,11 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
|
|
726
732
|
*/
|
727
733
|
isPublisher = false;
|
728
734
|
|
735
|
+
/**
|
736
|
+
* @generated from field: livekit.ParticipantInfo.Kind kind = 14;
|
737
|
+
*/
|
738
|
+
kind = ParticipantInfo_Kind.STANDARD;
|
739
|
+
|
729
740
|
constructor(data?: PartialMessage<ParticipantInfo>) {
|
730
741
|
super();
|
731
742
|
proto3.util.initPartial(data, this);
|
@@ -745,6 +756,7 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
|
|
745
756
|
{ no: 11, name: "permission", kind: "message", T: ParticipantPermission },
|
746
757
|
{ no: 12, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
747
758
|
{ no: 13, name: "is_publisher", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
759
|
+
{ no: 14, name: "kind", kind: "enum", T: proto3.getEnumType(ParticipantInfo_Kind) },
|
748
760
|
]);
|
749
761
|
|
750
762
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ParticipantInfo {
|
@@ -804,6 +816,54 @@ proto3.util.setEnumType(ParticipantInfo_State, "livekit.ParticipantInfo.State",
|
|
804
816
|
{ no: 3, name: "DISCONNECTED" },
|
805
817
|
]);
|
806
818
|
|
819
|
+
/**
|
820
|
+
* @generated from enum livekit.ParticipantInfo.Kind
|
821
|
+
*/
|
822
|
+
export enum ParticipantInfo_Kind {
|
823
|
+
/**
|
824
|
+
* standard participants, e.g. web clients
|
825
|
+
*
|
826
|
+
* @generated from enum value: STANDARD = 0;
|
827
|
+
*/
|
828
|
+
STANDARD = 0,
|
829
|
+
|
830
|
+
/**
|
831
|
+
* only ingests streams
|
832
|
+
*
|
833
|
+
* @generated from enum value: INGRESS = 1;
|
834
|
+
*/
|
835
|
+
INGRESS = 1,
|
836
|
+
|
837
|
+
/**
|
838
|
+
* only consumes streams
|
839
|
+
*
|
840
|
+
* @generated from enum value: EGRESS = 2;
|
841
|
+
*/
|
842
|
+
EGRESS = 2,
|
843
|
+
|
844
|
+
/**
|
845
|
+
* SIP participants
|
846
|
+
*
|
847
|
+
* @generated from enum value: SIP = 3;
|
848
|
+
*/
|
849
|
+
SIP = 3,
|
850
|
+
|
851
|
+
/**
|
852
|
+
* LiveKit agents
|
853
|
+
*
|
854
|
+
* @generated from enum value: AGENT = 4;
|
855
|
+
*/
|
856
|
+
AGENT = 4,
|
857
|
+
}
|
858
|
+
// Retrieve enum metadata with: proto3.getEnumType(ParticipantInfo_Kind)
|
859
|
+
proto3.util.setEnumType(ParticipantInfo_Kind, "livekit.ParticipantInfo.Kind", [
|
860
|
+
{ no: 0, name: "STANDARD" },
|
861
|
+
{ no: 1, name: "INGRESS" },
|
862
|
+
{ no: 2, name: "EGRESS" },
|
863
|
+
{ no: 3, name: "SIP" },
|
864
|
+
{ no: 4, name: "AGENT" },
|
865
|
+
]);
|
866
|
+
|
807
867
|
/**
|
808
868
|
* @generated from message livekit.Encryption
|
809
869
|
*/
|
@@ -1020,6 +1080,11 @@ export class TrackInfo extends Message<TrackInfo> {
|
|
1020
1080
|
*/
|
1021
1081
|
stream = "";
|
1022
1082
|
|
1083
|
+
/**
|
1084
|
+
* @generated from field: livekit.TimedVersion version = 18;
|
1085
|
+
*/
|
1086
|
+
version?: TimedVersion;
|
1087
|
+
|
1023
1088
|
constructor(data?: PartialMessage<TrackInfo>) {
|
1024
1089
|
super();
|
1025
1090
|
proto3.util.initPartial(data, this);
|
@@ -1045,6 +1110,7 @@ export class TrackInfo extends Message<TrackInfo> {
|
|
1045
1110
|
{ no: 15, name: "disable_red", kind: "scalar", T: 8 /* ScalarType.BOOL */ },
|
1046
1111
|
{ no: 16, name: "encryption", kind: "enum", T: proto3.getEnumType(Encryption_Type) },
|
1047
1112
|
{ no: 17, name: "stream", kind: "scalar", T: 9 /* ScalarType.STRING */ },
|
1113
|
+
{ no: 18, name: "version", kind: "message", T: TimedVersion },
|
1048
1114
|
]);
|
1049
1115
|
|
1050
1116
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TrackInfo {
|
package/src/room/RTCEngine.ts
CHANGED
@@ -106,6 +106,10 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
|
|
106
106
|
return this._isClosed;
|
107
107
|
}
|
108
108
|
|
109
|
+
get pendingReconnect() {
|
110
|
+
return !!this.reconnectTimeout;
|
111
|
+
}
|
112
|
+
|
109
113
|
private lossyDC?: RTCDataChannel;
|
110
114
|
|
111
115
|
// @ts-ignore noUnusedLocals
|
@@ -838,7 +842,8 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
|
|
838
842
|
this.regionUrlProvider.updateToken(this.token);
|
839
843
|
}
|
840
844
|
this.reconnectTimeout = CriticalTimers.setTimeout(
|
841
|
-
() =>
|
845
|
+
() =>
|
846
|
+
this.attemptReconnect(disconnectReason).finally(() => (this.reconnectTimeout = undefined)),
|
842
847
|
delay,
|
843
848
|
);
|
844
849
|
};
|