livekit-client 2.22.3 → 2.23.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 +35 -0
- package/dist/livekit-client.e2ee.worker.js +1 -1
- package/dist/livekit-client.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs +71 -8
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +1746 -547
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.fm.worker.js +1 -1
- package/dist/livekit-client.fm.worker.js.map +1 -1
- package/dist/livekit-client.fm.worker.mjs +2 -1
- package/dist/livekit-client.fm.worker.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 +4 -2
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/api/WebSocketStream.d.ts +1 -0
- package/dist/src/api/WebSocketStream.d.ts.map +1 -1
- package/dist/src/api/utils.d.ts +1 -1
- package/dist/src/api/utils.d.ts.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
- package/dist/src/e2ee/worker/naluUtils.d.ts +12 -1
- package/dist/src/e2ee/worker/naluUtils.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/options.d.ts +14 -0
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/room/DefaultReconnectPolicy.d.ts.map +1 -1
- package/dist/src/room/PCTransport.d.ts +100 -7
- package/dist/src/room/PCTransport.d.ts.map +1 -1
- package/dist/src/room/PCTransportManager.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +16 -0
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts +54 -1
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/data-channel/DataChannelManager.d.ts +9 -8
- package/dist/src/room/data-channel/DataChannelManager.d.ts.map +1 -1
- package/dist/src/room/data-channel/FlowControlledDataChannel.d.ts +25 -12
- package/dist/src/room/data-channel/FlowControlledDataChannel.d.ts.map +1 -1
- package/dist/src/room/data-channel/LossyDataChannel.d.ts.map +1 -1
- package/dist/src/room/data-channel/ReliableDataChannel.d.ts.map +1 -1
- package/dist/src/room/data-stream/incoming/IncomingDataStreamManager.d.ts.map +1 -1
- package/dist/src/room/defaults.d.ts.map +1 -1
- package/dist/src/room/errors.d.ts +18 -0
- package/dist/src/room/errors.d.ts.map +1 -1
- package/dist/src/room/events.d.ts +3 -2
- package/dist/src/room/events.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts +4 -0
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/Participant.d.ts +1 -1
- package/dist/src/room/participant/Participant.d.ts.map +1 -1
- package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
- package/dist/src/room/rpc/client/RpcClientManager.d.ts.map +1 -1
- package/dist/src/room/rpc/utils.d.ts.map +1 -1
- package/dist/src/room/track/LocalAudioTrack.d.ts +24 -1
- package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrack.d.ts +18 -0
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts +9 -0
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteAudioTrack.d.ts +6 -0
- package/dist/src/room/track/RemoteAudioTrack.d.ts.map +1 -1
- package/dist/src/room/track/processor/types.d.ts +11 -0
- package/dist/src/room/track/processor/types.d.ts.map +1 -1
- package/dist/src/room/track/utils.d.ts +13 -0
- package/dist/src/room/track/utils.d.ts.map +1 -1
- package/dist/src/room/utils.d.ts +60 -1
- package/dist/src/room/utils.d.ts.map +1 -1
- package/dist/src/test/compressionStreamStubs.d.ts +12 -0
- package/dist/src/test/compressionStreamStubs.d.ts.map +1 -0
- package/dist/ts4.2/api/SignalClient.d.ts +187 -185
- package/dist/ts4.2/api/SignalClientStateMachine.d.ts +85 -85
- package/dist/ts4.2/api/WebSocketStream.d.ts +34 -33
- package/dist/ts4.2/api/utils.d.ts +9 -9
- package/dist/ts4.2/connectionHelper/ConnectionCheck.d.ts +30 -30
- package/dist/ts4.2/connectionHelper/checks/Checker.d.ts +62 -62
- package/dist/ts4.2/connectionHelper/checks/cloudRegion.d.ts +18 -18
- package/dist/ts4.2/connectionHelper/checks/connectionProtocol.d.ts +20 -20
- package/dist/ts4.2/connectionHelper/checks/publishAudio.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/publishVideo.d.ts +7 -7
- package/dist/ts4.2/connectionHelper/checks/reconnect.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/turn.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/webrtc.d.ts +6 -6
- package/dist/ts4.2/connectionHelper/checks/websocket.d.ts +6 -6
- package/dist/ts4.2/e2ee/E2eeManager.d.ts +111 -111
- package/dist/ts4.2/e2ee/KeyProvider.d.ts +54 -54
- package/dist/ts4.2/e2ee/constants.d.ts +21 -21
- package/dist/ts4.2/e2ee/errors.d.ts +12 -12
- package/dist/ts4.2/e2ee/events.d.ts +39 -39
- package/dist/ts4.2/e2ee/index.d.ts +6 -6
- package/dist/ts4.2/e2ee/types.d.ts +231 -231
- package/dist/ts4.2/e2ee/utils.d.ts +32 -32
- package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +16 -16
- package/dist/ts4.2/e2ee/worker/ErrorRateLimiter.d.ts +21 -21
- package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +209 -209
- package/dist/ts4.2/e2ee/worker/ParticipantKeyHandler.d.ts +81 -84
- package/dist/ts4.2/e2ee/worker/e2ee.worker.d.ts +2 -2
- package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +39 -28
- package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +23 -23
- package/dist/ts4.2/frameMetadata/FrameMetadataManager.d.ts +53 -53
- package/dist/ts4.2/frameMetadata/frameMetadata.d.ts +33 -33
- package/dist/ts4.2/frameMetadata/types.d.ts +62 -62
- package/dist/ts4.2/frameMetadata/utils.d.ts +9 -9
- package/dist/ts4.2/frameMetadata/worker/frameMetadata.worker.d.ts +2 -2
- package/dist/ts4.2/index.d.ts +76 -76
- package/dist/ts4.2/logger.d.ts +66 -66
- package/dist/ts4.2/options.d.ts +163 -149
- package/dist/ts4.2/room/BackOffStrategy.d.ts +27 -27
- package/dist/ts4.2/room/DefaultReconnectPolicy.d.ts +8 -8
- package/dist/ts4.2/room/DeviceManager.d.ts +12 -12
- package/dist/ts4.2/room/PCTransport.d.ts +268 -175
- package/dist/ts4.2/room/PCTransportManager.d.ts +77 -77
- package/dist/ts4.2/room/RTCEngine.d.ts +277 -262
- package/dist/ts4.2/room/ReconnectPolicy.d.ts +24 -24
- package/dist/ts4.2/room/RegionUrlProvider.d.ts +36 -36
- package/dist/ts4.2/room/Room.d.ts +407 -365
- package/dist/ts4.2/room/attribute-typings.d.ts +35 -35
- package/dist/ts4.2/room/data-channel/DataChannelManager.d.ts +63 -62
- package/dist/ts4.2/room/data-channel/FlowControlledDataChannel.d.ts +107 -95
- package/dist/ts4.2/room/data-channel/LossyDataChannel.d.ts +41 -41
- package/dist/ts4.2/room/data-channel/ReliableDataChannel.d.ts +57 -57
- package/dist/ts4.2/room/data-channel/types.d.ts +12 -12
- package/dist/ts4.2/room/data-stream/compression.d.ts +49 -49
- package/dist/ts4.2/room/data-stream/constants.d.ts +18 -18
- package/dist/ts4.2/room/data-stream/incoming/IncomingDataStreamManager.d.ts +29 -29
- package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +80 -80
- package/dist/ts4.2/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts +73 -73
- package/dist/ts4.2/room/data-stream/outgoing/StreamWriter.d.ts +16 -16
- package/dist/ts4.2/room/data-stream/outgoing/header-utils.d.ts +18 -18
- package/dist/ts4.2/room/data-track/LocalDataTrack.d.ts +79 -80
- package/dist/ts4.2/room/data-track/RemoteDataTrack.d.ts +50 -50
- package/dist/ts4.2/room/data-track/depacketizer.d.ts +59 -59
- package/dist/ts4.2/room/data-track/frame.d.ts +22 -22
- package/dist/ts4.2/room/data-track/handle.d.ts +27 -27
- package/dist/ts4.2/room/data-track/incoming/IncomingDataTrackManager.d.ts +124 -124
- package/dist/ts4.2/room/data-track/incoming/errors.d.ts +24 -24
- package/dist/ts4.2/room/data-track/incoming/pipeline.d.ts +41 -41
- package/dist/ts4.2/room/data-track/incoming/types.d.ts +20 -20
- package/dist/ts4.2/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +126 -126
- package/dist/ts4.2/room/data-track/outgoing/errors.d.ts +74 -74
- package/dist/ts4.2/room/data-track/outgoing/pipeline.d.ts +23 -23
- package/dist/ts4.2/room/data-track/outgoing/types.d.ts +48 -48
- package/dist/ts4.2/room/data-track/packet/constants.d.ts +20 -20
- package/dist/ts4.2/room/data-track/packet/errors.d.ts +40 -40
- package/dist/ts4.2/room/data-track/packet/extensions.d.ts +69 -69
- package/dist/ts4.2/room/data-track/packet/index.d.ts +98 -98
- package/dist/ts4.2/room/data-track/packet/serializable.d.ts +13 -13
- package/dist/ts4.2/room/data-track/packetizer.d.ts +43 -43
- package/dist/ts4.2/room/data-track/track-interfaces.d.ts +23 -23
- package/dist/ts4.2/room/data-track/types.d.ts +22 -22
- package/dist/ts4.2/room/data-track/utils.d.ts +60 -60
- package/dist/ts4.2/room/debounce.d.ts +11 -11
- package/dist/ts4.2/room/defaults.d.ts +9 -9
- package/dist/ts4.2/room/errors.d.ts +180 -162
- package/dist/ts4.2/room/events.d.ts +638 -637
- package/dist/ts4.2/room/participant/LocalParticipant.d.ts +291 -287
- package/dist/ts4.2/room/participant/Participant.d.ts +142 -144
- package/dist/ts4.2/room/participant/ParticipantTrackPermission.d.ts +26 -26
- package/dist/ts4.2/room/participant/RemoteParticipant.d.ts +85 -86
- package/dist/ts4.2/room/participant/publishUtils.d.ts +53 -53
- package/dist/ts4.2/room/rpc/client/RpcClientManager.d.ts +43 -43
- package/dist/ts4.2/room/rpc/client/events.d.ts +8 -8
- package/dist/ts4.2/room/rpc/index.d.ts +7 -7
- package/dist/ts4.2/room/rpc/server/RpcServerManager.d.ts +44 -44
- package/dist/ts4.2/room/rpc/server/events.d.ts +8 -8
- package/dist/ts4.2/room/rpc/utils.d.ts +131 -131
- package/dist/ts4.2/room/stats.d.ts +71 -71
- package/dist/ts4.2/room/statsSummary.d.ts +13 -13
- package/dist/ts4.2/room/timers.d.ts +12 -12
- package/dist/ts4.2/room/token-source/TokenSource.d.ts +82 -82
- package/dist/ts4.2/room/token-source/types.d.ts +70 -70
- package/dist/ts4.2/room/token-source/utils.d.ts +8 -8
- package/dist/ts4.2/room/track/FrameMetadataExtractor.d.ts +19 -19
- package/dist/ts4.2/room/track/LocalAudioTrack.d.ts +62 -42
- package/dist/ts4.2/room/track/LocalTrack.d.ts +143 -125
- package/dist/ts4.2/room/track/LocalTrackPublication.d.ts +42 -42
- package/dist/ts4.2/room/track/LocalVideoTrack.d.ts +109 -100
- package/dist/ts4.2/room/track/RemoteAudioTrack.d.ts +61 -55
- package/dist/ts4.2/room/track/RemoteTrack.d.ts +38 -38
- package/dist/ts4.2/room/track/RemoteTrackPublication.d.ts +72 -75
- package/dist/ts4.2/room/track/RemoteVideoTrack.d.ts +73 -76
- package/dist/ts4.2/room/track/Track.d.ts +156 -166
- package/dist/ts4.2/room/track/TrackPublication.d.ts +75 -81
- package/dist/ts4.2/room/track/create.d.ts +25 -25
- package/dist/ts4.2/room/track/facingMode.d.ts +41 -41
- package/dist/ts4.2/room/track/options.d.ts +403 -403
- package/dist/ts4.2/room/track/processor/types.d.ts +42 -31
- package/dist/ts4.2/room/track/record.d.ts +13 -13
- package/dist/ts4.2/room/track/types.d.ts +28 -28
- package/dist/ts4.2/room/track/utils.d.ts +60 -47
- package/dist/ts4.2/room/types.d.ts +127 -127
- package/dist/ts4.2/room/utils.d.ts +273 -214
- package/dist/ts4.2/test/MockMediaStreamTrack.d.ts +26 -26
- package/dist/ts4.2/test/compressionStreamStubs.d.ts +12 -0
- package/dist/ts4.2/test/mocks.d.ts +12 -12
- package/dist/ts4.2/test/promiseState.d.ts +12 -12
- package/dist/ts4.2/test/signalToken.d.ts +26 -26
- package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -2
- package/dist/ts4.2/utils/AsyncQueue.d.ts +23 -23
- package/dist/ts4.2/utils/TypedPromise.d.ts +17 -17
- package/dist/ts4.2/utils/abort-signal-polyfill.d.ts +13 -13
- package/dist/ts4.2/utils/browserParser.d.ts +13 -13
- package/dist/ts4.2/utils/camelToSnakeCase.d.ts +8 -8
- package/dist/ts4.2/utils/cloneDeep.d.ts +2 -2
- package/dist/ts4.2/utils/dataPacketBuffer.d.ts +34 -34
- package/dist/ts4.2/utils/deferrable-map.d.ts +32 -32
- package/dist/ts4.2/utils/machineInspector.d.ts +54 -54
- package/dist/ts4.2/utils/serializer.d.ts +48 -48
- package/dist/ts4.2/utils/subscribeToEvents.d.ts +15 -15
- package/dist/ts4.2/utils/ttlmap.d.ts +20 -20
- package/dist/ts4.2/version.d.ts +15 -15
- package/package.json +5 -4
- package/src/api/SignalClient.e2e.test.ts +1 -3
- package/src/api/SignalClient.test.ts +394 -10
- package/src/api/SignalClient.ts +132 -76
- package/src/api/WebSocketStream.test.ts +11 -0
- package/src/api/WebSocketStream.ts +22 -1
- package/src/api/utils.ts +1 -1
- package/src/e2ee/E2eeManager.test.ts +43 -0
- package/src/e2ee/E2eeManager.ts +6 -2
- package/src/e2ee/worker/FrameCryptor.test.ts +212 -90
- package/src/e2ee/worker/FrameCryptor.ts +21 -4
- package/src/e2ee/worker/naluUtils.test.ts +123 -0
- package/src/e2ee/worker/naluUtils.ts +57 -2
- package/src/index.ts +2 -0
- package/src/options.ts +16 -0
- package/src/room/DefaultReconnectPolicy.test.ts +58 -0
- package/src/room/DefaultReconnectPolicy.ts +14 -2
- package/src/room/PCTransport.test.ts +327 -9
- package/src/room/PCTransport.ts +339 -36
- package/src/room/PCTransportManager.ts +3 -1
- package/src/room/RTCEngine.test.ts +318 -2
- package/src/room/RTCEngine.ts +126 -12
- package/src/room/Room.test.ts +148 -6
- package/src/room/Room.ts +312 -80
- package/src/room/data-channel/DataChannelManager.test.ts +24 -7
- package/src/room/data-channel/DataChannelManager.ts +43 -38
- package/src/room/data-channel/FlowControlledDataChannel.test.ts +60 -18
- package/src/room/data-channel/FlowControlledDataChannel.ts +40 -22
- package/src/room/data-channel/LossyDataChannel.test.ts +38 -0
- package/src/room/data-channel/LossyDataChannel.ts +10 -1
- package/src/room/data-channel/ReliableDataChannel.test.ts +72 -0
- package/src/room/data-channel/ReliableDataChannel.ts +16 -5
- package/src/room/data-stream/incoming/IncomingDataStreamManager.test.ts +47 -20
- package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +16 -5
- package/src/room/data-stream/outgoing/OutgoingDataStreamManager.test.ts +60 -39
- package/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +4 -4
- package/src/room/defaults.ts +1 -0
- package/src/room/errors.test.ts +36 -0
- package/src/room/errors.ts +27 -0
- package/src/room/events.ts +2 -1
- package/src/room/participant/LocalParticipant.test.ts +136 -1
- package/src/room/participant/LocalParticipant.ts +66 -17
- package/src/room/participant/Participant.ts +6 -3
- package/src/room/participant/publishUtils.ts +0 -19
- package/src/room/participant/restartOnDefaultAudioDevice.test.ts +177 -0
- package/src/room/rpc/client/RpcClientManager.test.ts +51 -0
- package/src/room/rpc/client/RpcClientManager.ts +32 -15
- package/src/room/rpc/utils.test.ts +32 -0
- package/src/room/rpc/utils.ts +7 -0
- package/src/room/track/LocalAudioTrack.ts +101 -10
- package/src/room/track/LocalTrack.ts +87 -19
- package/src/room/track/LocalVideoTrack.ts +17 -3
- package/src/room/track/RemoteAudioTrack.ts +59 -14
- package/src/room/track/RemoteVideoTrack.test.ts +210 -0
- package/src/room/track/RemoteVideoTrack.ts +29 -3
- package/src/room/track/processor/types.ts +11 -0
- package/src/room/track/utils.test.ts +206 -2
- package/src/room/track/utils.ts +117 -5
- package/src/room/utils.test.ts +250 -0
- package/src/room/utils.ts +152 -19
- package/src/test/compressionStreamStubs.ts +53 -0
|
@@ -1,262 +1,277 @@
|
|
|
1
|
-
import type { AddTrackRequest, ConnectionQualityUpdate, JoinResponse, RegionSettings, StreamStateUpdate, SubscriptionPermissionUpdate, SubscriptionResponse } from '@livekit/protocol';
|
|
2
|
-
import { DataPacket, DataTrackSubscriberHandles, DisconnectReason, Encryption_Type, ParticipantInfo, PublishDataTrackResponse, ReconnectReason, RequestResponse, Room as RoomModel, RoomMovedResponse, ServerInfo, SpeakerInfo, SubscribedQualityUpdate, TrackInfo, TrackUnpublishedResponse, Transcription, UnpublishDataTrackResponse } from '@livekit/protocol';
|
|
3
|
-
import type TypedEventEmitter from 'typed-emitter';
|
|
4
|
-
import type { SignalOptions } from '../api/SignalClient';
|
|
5
|
-
import { SignalClient } from '../api/SignalClient';
|
|
6
|
-
import type { BaseE2EEManager } from '../e2ee/E2eeManager';
|
|
7
|
-
import type { InternalRoomOptions } from '../options';
|
|
8
|
-
import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
|
|
9
|
-
import PCTransport from './PCTransport';
|
|
10
|
-
import { PCTransportManager } from './PCTransportManager';
|
|
11
|
-
import { DataChannelKind } from './data-channel/types';
|
|
12
|
-
import { DataTrackInfo } from './data-track/types';
|
|
13
|
-
import type LocalTrack from './track/LocalTrack';
|
|
14
|
-
import type LocalTrackPublication from './track/LocalTrackPublication';
|
|
15
|
-
import LocalVideoTrack from './track/LocalVideoTrack';
|
|
16
|
-
import type { SimulcastTrackInfo } from './track/LocalVideoTrack';
|
|
17
|
-
import type RemoteTrackPublication from './track/RemoteTrackPublication';
|
|
18
|
-
import type { Track } from './track/Track';
|
|
19
|
-
import type { TrackPublishOptions, VideoCodec } from './track/options';
|
|
20
|
-
export { DataChannelKind };
|
|
21
|
-
declare const RTCEngine_base: new () => TypedEventEmitter<EngineEventCallbacks>;
|
|
22
|
-
/** @internal */
|
|
23
|
-
export default class RTCEngine extends RTCEngine_base {
|
|
24
|
-
private options;
|
|
25
|
-
client: SignalClient;
|
|
26
|
-
rtcConfig: RTCConfiguration;
|
|
27
|
-
peerConnectionTimeout: number;
|
|
28
|
-
fullReconnectOnNext: boolean;
|
|
29
|
-
pcManager?: PCTransportManager;
|
|
30
|
-
/**
|
|
31
|
-
* @internal
|
|
32
|
-
*/
|
|
33
|
-
latestJoinResponse?: JoinResponse;
|
|
34
|
-
/**
|
|
35
|
-
* @internal
|
|
36
|
-
*/
|
|
37
|
-
latestRemoteOfferId: number;
|
|
38
|
-
/** @internal */
|
|
39
|
-
e2eeManager: BaseE2EEManager | undefined;
|
|
40
|
-
get isClosed(): boolean;
|
|
41
|
-
get isNewlyCreated(): boolean;
|
|
42
|
-
get pendingReconnect(): boolean;
|
|
43
|
-
get serverVersion(): string | undefined;
|
|
44
|
-
/**
|
|
45
|
-
* Owns the data channels: the three flow-controlled publisher wrappers (engine-lifetime; the
|
|
46
|
-
* RTCDataChannel handles underneath are attached/detached as peer connections come and go, with
|
|
47
|
-
* waiter invalidation built into the turnover) plus the subscriber-side receive handles.
|
|
48
|
-
*/
|
|
49
|
-
private dataChannels;
|
|
50
|
-
private get reliableChannel();
|
|
51
|
-
private get lossyChannel();
|
|
52
|
-
private get dataTrackChannel();
|
|
53
|
-
private subscriberPrimary;
|
|
54
|
-
private pcState;
|
|
55
|
-
private _isClosed;
|
|
56
|
-
private _isNewlyCreated;
|
|
57
|
-
private pendingTrackResolvers;
|
|
58
|
-
private url?;
|
|
59
|
-
private token?;
|
|
60
|
-
private signalOpts?;
|
|
61
|
-
private reconnectAttempts;
|
|
62
|
-
private reconnectStart;
|
|
63
|
-
private clientConfiguration?;
|
|
64
|
-
private attemptingReconnect;
|
|
65
|
-
private
|
|
66
|
-
private
|
|
67
|
-
private
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
private
|
|
78
|
-
|
|
79
|
-
private
|
|
80
|
-
private
|
|
81
|
-
private
|
|
82
|
-
|
|
83
|
-
private
|
|
84
|
-
|
|
85
|
-
private
|
|
86
|
-
|
|
87
|
-
private
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*/
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
private
|
|
138
|
-
private
|
|
139
|
-
private
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
private
|
|
147
|
-
private
|
|
148
|
-
private
|
|
149
|
-
private
|
|
150
|
-
/**
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
private
|
|
155
|
-
private
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
private
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
private
|
|
169
|
-
|
|
170
|
-
private
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
*
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
private
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
1
|
+
import type { AddTrackRequest, ConnectionQualityUpdate, JoinResponse, RegionSettings, StreamStateUpdate, SubscriptionPermissionUpdate, SubscriptionResponse } from '@livekit/protocol';
|
|
2
|
+
import { DataPacket, DataTrackSubscriberHandles, DisconnectReason, Encryption_Type, ParticipantInfo, PublishDataTrackResponse, ReconnectReason, RequestResponse, Room as RoomModel, RoomMovedResponse, ServerInfo, SpeakerInfo, SubscribedQualityUpdate, TrackInfo, TrackUnpublishedResponse, Transcription, UnpublishDataTrackResponse } from '@livekit/protocol';
|
|
3
|
+
import type TypedEventEmitter from 'typed-emitter';
|
|
4
|
+
import type { SignalOptions } from '../api/SignalClient';
|
|
5
|
+
import { SignalClient } from '../api/SignalClient';
|
|
6
|
+
import type { BaseE2EEManager } from '../e2ee/E2eeManager';
|
|
7
|
+
import type { InternalRoomOptions } from '../options';
|
|
8
|
+
import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
|
|
9
|
+
import PCTransport from './PCTransport';
|
|
10
|
+
import { PCTransportManager } from './PCTransportManager';
|
|
11
|
+
import { DataChannelKind } from './data-channel/types';
|
|
12
|
+
import { DataTrackInfo } from './data-track/types';
|
|
13
|
+
import type LocalTrack from './track/LocalTrack';
|
|
14
|
+
import type LocalTrackPublication from './track/LocalTrackPublication';
|
|
15
|
+
import LocalVideoTrack from './track/LocalVideoTrack';
|
|
16
|
+
import type { SimulcastTrackInfo } from './track/LocalVideoTrack';
|
|
17
|
+
import type RemoteTrackPublication from './track/RemoteTrackPublication';
|
|
18
|
+
import type { Track } from './track/Track';
|
|
19
|
+
import type { TrackPublishOptions, VideoCodec } from './track/options';
|
|
20
|
+
export { DataChannelKind };
|
|
21
|
+
declare const RTCEngine_base: new () => TypedEventEmitter<EngineEventCallbacks>;
|
|
22
|
+
/** @internal */
|
|
23
|
+
export default class RTCEngine extends RTCEngine_base {
|
|
24
|
+
private options;
|
|
25
|
+
client: SignalClient;
|
|
26
|
+
rtcConfig: RTCConfiguration;
|
|
27
|
+
peerConnectionTimeout: number;
|
|
28
|
+
fullReconnectOnNext: boolean;
|
|
29
|
+
pcManager?: PCTransportManager;
|
|
30
|
+
/**
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
latestJoinResponse?: JoinResponse;
|
|
34
|
+
/**
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
latestRemoteOfferId: number;
|
|
38
|
+
/** @internal */
|
|
39
|
+
e2eeManager: BaseE2EEManager | undefined;
|
|
40
|
+
get isClosed(): boolean;
|
|
41
|
+
get isNewlyCreated(): boolean;
|
|
42
|
+
get pendingReconnect(): boolean;
|
|
43
|
+
get serverVersion(): (string | undefined);
|
|
44
|
+
/**
|
|
45
|
+
* Owns the data channels: the three flow-controlled publisher wrappers (engine-lifetime; the
|
|
46
|
+
* RTCDataChannel handles underneath are attached/detached as peer connections come and go, with
|
|
47
|
+
* waiter invalidation built into the turnover) plus the subscriber-side receive handles.
|
|
48
|
+
*/
|
|
49
|
+
private dataChannels;
|
|
50
|
+
private get reliableChannel();
|
|
51
|
+
private get lossyChannel();
|
|
52
|
+
private get dataTrackChannel();
|
|
53
|
+
private subscriberPrimary;
|
|
54
|
+
private pcState;
|
|
55
|
+
private _isClosed;
|
|
56
|
+
private _isNewlyCreated;
|
|
57
|
+
private pendingTrackResolvers;
|
|
58
|
+
private url?;
|
|
59
|
+
private token?;
|
|
60
|
+
private signalOpts?;
|
|
61
|
+
private reconnectAttempts;
|
|
62
|
+
private reconnectStart;
|
|
63
|
+
private clientConfiguration?;
|
|
64
|
+
private attemptingReconnect;
|
|
65
|
+
private reconnectAbortController?;
|
|
66
|
+
private reconnectPolicy;
|
|
67
|
+
private reconnectTimeout?;
|
|
68
|
+
private participantSid?;
|
|
69
|
+
/** keeps track of how often an initial join connection has been tried */
|
|
70
|
+
private joinAttempts;
|
|
71
|
+
/**
|
|
72
|
+
* When the current join attempt began (`performance.now()`), taken at the top of `join` before
|
|
73
|
+
* the signal connection or the peer connections exist. Every attempt (a join retry, or the join
|
|
74
|
+
* inside a full restart) times itself from scratch. Consumed when the primary transport first
|
|
75
|
+
* connects, to hand the publisher its connection setup time; resumes never set it.
|
|
76
|
+
*/
|
|
77
|
+
private joinStartedAt?;
|
|
78
|
+
/** specifies how often an initial join connection is allowed to retry */
|
|
79
|
+
private maxJoinAttempts;
|
|
80
|
+
private closingLock;
|
|
81
|
+
private dataProcessLock;
|
|
82
|
+
private shouldFailNext;
|
|
83
|
+
private shouldFailOnV1Path;
|
|
84
|
+
private regionStrategy?;
|
|
85
|
+
private log;
|
|
86
|
+
private loggerOptions;
|
|
87
|
+
private publisherConnectionPromise;
|
|
88
|
+
private reliableReceivedState;
|
|
89
|
+
private midToTrackId;
|
|
90
|
+
/** used to indicate whether the browser is currently waiting to reconnect */
|
|
91
|
+
private isWaitingForNetworkReconnect;
|
|
92
|
+
/** set while the local participant's connection quality is `LOST`; forces a full reconnect on timeout */
|
|
93
|
+
private lostQualityTimeout?;
|
|
94
|
+
/** timestamp (ms) the primary transport entered `CONNECTING`, used to bound how long we tolerate it */
|
|
95
|
+
private transportConnectingSince?;
|
|
96
|
+
/**
|
|
97
|
+
* Abort handlers for the in-flight `negotiate()` calls, which a single central
|
|
98
|
+
* Closing/Restarting listener pair fans out to. Registering a listener pair per call instead
|
|
99
|
+
* accumulates them on the engine emitter and trips its max-listener warning under
|
|
100
|
+
* renegotiation bursts.
|
|
101
|
+
*/
|
|
102
|
+
private pendingNegotiationAborts;
|
|
103
|
+
constructor(options: InternalRoomOptions);
|
|
104
|
+
get logContext(): {
|
|
105
|
+
room: string | undefined;
|
|
106
|
+
roomID: string | undefined;
|
|
107
|
+
participant: string | undefined;
|
|
108
|
+
participantID: string | undefined;
|
|
109
|
+
};
|
|
110
|
+
join(url: string, token: string, opts: SignalOptions, abortSignal?: AbortSignal,
|
|
111
|
+
/** setting this to true results in dual peer connection mode being used */
|
|
112
|
+
useV0Path?: boolean): Promise<{
|
|
113
|
+
joinResponse: JoinResponse;
|
|
114
|
+
serverInfo: Partial<ServerInfo>;
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* @param reason why the session is ending, recorded by the signal lifecycle. Worth passing
|
|
118
|
+
* wherever the caller knows more than "someone called close" — the server's leave reason, or
|
|
119
|
+
* having given up on reconnecting.
|
|
120
|
+
*/
|
|
121
|
+
close(reason?: string): Promise<void>;
|
|
122
|
+
cleanupPeerConnections(): Promise<void>;
|
|
123
|
+
cleanupLossyDataStats(): void;
|
|
124
|
+
cleanupClient(reason?: string): Promise<void>;
|
|
125
|
+
addTrack(req: AddTrackRequest): Promise<TrackInfo>;
|
|
126
|
+
/**
|
|
127
|
+
* Removes sender from PeerConnection, returning true if it was removed successfully
|
|
128
|
+
* and a negotiation is necessary
|
|
129
|
+
* @param sender
|
|
130
|
+
* @returns
|
|
131
|
+
*/
|
|
132
|
+
removeTrack(sender: RTCRtpSender): boolean;
|
|
133
|
+
updateMuteStatus(trackSid: string, muted: boolean): void;
|
|
134
|
+
get dataSubscriberReadyState(): (string | undefined);
|
|
135
|
+
getConnectedServerAddress(): Promise<string | undefined>;
|
|
136
|
+
setRegionStrategy(strategy: RegionStrategy | undefined): void;
|
|
137
|
+
private configure;
|
|
138
|
+
private setupSignalClientCallbacks;
|
|
139
|
+
private makeRTCConfiguration;
|
|
140
|
+
/**
|
|
141
|
+
* Populate the publisher PC so its first offer carries the data channels + recvonly media
|
|
142
|
+
* sections. Required for every V1 connection: Firefox only binds receive decoders for media
|
|
143
|
+
* present in that first offer, and the offer-with-join path needs the sections to
|
|
144
|
+
* build a meaningful initial offer. Must be called on a configured pcManager.
|
|
145
|
+
*/
|
|
146
|
+
private applyInitialPublisherLayout;
|
|
147
|
+
private addMediaSections;
|
|
148
|
+
private createDataChannels;
|
|
149
|
+
private handleDataChannel;
|
|
150
|
+
/** Normalizes an incoming data-channel message into bytes, or logs and returns undefined. */
|
|
151
|
+
private decodeDataMessage;
|
|
152
|
+
private handleDataMessage;
|
|
153
|
+
private handleDataTrackMessage;
|
|
154
|
+
private handleDataError;
|
|
155
|
+
private handleDataChannelClose;
|
|
156
|
+
createSender(track: LocalTrack, opts: TrackPublishOptions, encodings?: RTCRtpEncodingParameters[]): Promise<RTCRtpSender>;
|
|
157
|
+
createSimulcastSender(track: LocalVideoTrack, simulcastTrack: SimulcastTrackInfo, opts: TrackPublishOptions, encodings?: RTCRtpEncodingParameters[]): Promise<RTCRtpSender | undefined>;
|
|
158
|
+
private get frameMetadataWorker();
|
|
159
|
+
private setupFrameMetadataSender;
|
|
160
|
+
private createTransceiverRTCRtpSender;
|
|
161
|
+
private createSimulcastTransceiverSender;
|
|
162
|
+
private createRTCRtpSender;
|
|
163
|
+
private handleDisconnect;
|
|
164
|
+
/**
|
|
165
|
+
* A sustained local `LOST` while connected and publishing means the server isn't receiving
|
|
166
|
+
* our media, so force a full reconnect; any non-`LOST` value cancels a pending trigger.
|
|
167
|
+
*/
|
|
168
|
+
private handleLocalConnectionQuality;
|
|
169
|
+
private scheduleLostQualityReconnect;
|
|
170
|
+
private clearLostQualityTimeout;
|
|
171
|
+
/** Whether the publisher currently has any sender with a live track. */
|
|
172
|
+
private hasActivePublisherSenders;
|
|
173
|
+
/**
|
|
174
|
+
* Forces a full reconnect while keeping the engine (and its saved credentials) alive. Used by
|
|
175
|
+
* Room's connection-reconcile safety net when the transport silently died but we looked connected.
|
|
176
|
+
* @internal
|
|
177
|
+
*/
|
|
178
|
+
reconnect(reason?: ReconnectReason): void;
|
|
179
|
+
private attemptReconnect;
|
|
180
|
+
private getNextRetryDelay;
|
|
181
|
+
private restartConnection;
|
|
182
|
+
private resumeConnection;
|
|
183
|
+
waitForPCInitialConnection(timeout?: number, abortController?: AbortController): Promise<void>;
|
|
184
|
+
private waitForPCReconnected;
|
|
185
|
+
waitForRestarted: () => Promise<void>;
|
|
186
|
+
/** @internal */
|
|
187
|
+
publishRpcAck(destinationIdentity: string, requestId: string): Promise<void>;
|
|
188
|
+
sendDataPacket(packet: DataPacket,
|
|
189
|
+
/** Data-track frames don't come through here — they're sent pre-serialized via {@link sendDataTrackFrame }. */
|
|
190
|
+
kind: Exclude<DataChannelKind, DataChannelKind.DATA_TRACK_LOSSY>): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* Sends pre-serialized bytes on the data-track channel. This is the one send path that doesn't
|
|
193
|
+
* go through {@link sendDataPacket} — Room's `packetAvailable` handler calls it directly with
|
|
194
|
+
* bytes the data-track pipeline already serialized.
|
|
195
|
+
*
|
|
196
|
+
* @internal
|
|
197
|
+
*/
|
|
198
|
+
sendDataTrackFrame(bytes: NonSharedUint8Array): Promise<void>;
|
|
199
|
+
private resendReliableMessagesForResume;
|
|
200
|
+
/** The flow-control gate for `kind` — see {@link FlowControlledDataChannel}. */
|
|
201
|
+
private flowControlFor;
|
|
202
|
+
/**
|
|
203
|
+
* Resolves once the caller may send on the `kind` channel — see
|
|
204
|
+
* {@link FlowControlledDataChannel.waitForHeadroomWithLock}.
|
|
205
|
+
*/
|
|
206
|
+
waitForBufferHeadroom(kind: DataChannelKind): Promise<void>;
|
|
207
|
+
/**
|
|
208
|
+
* @internal
|
|
209
|
+
*/
|
|
210
|
+
ensureDataTransportConnected(kind: DataChannelKind, subscriber?: boolean): Promise<void>;
|
|
211
|
+
private ensurePublisherConnected;
|
|
212
|
+
verifyTransport(): boolean;
|
|
213
|
+
/** @internal */
|
|
214
|
+
negotiate(): Promise<void>;
|
|
215
|
+
dataChannelForKind(kind: DataChannelKind, sub?: boolean): RTCDataChannel | undefined;
|
|
216
|
+
/** @internal */
|
|
217
|
+
sendSyncState(remoteTracks: RemoteTrackPublication[], localTracks: LocalTrackPublication[], localDataTrackInfos: Array<DataTrackInfo>): void;
|
|
218
|
+
failNext(): void;
|
|
219
|
+
failNextV1Path(): void;
|
|
220
|
+
private onRtpMapAvailable;
|
|
221
|
+
private dataChannelsInfo;
|
|
222
|
+
private clearReconnectTimeout;
|
|
223
|
+
private clearPendingReconnect;
|
|
224
|
+
private handleBrowserOnLine;
|
|
225
|
+
private handleBrowserOffline;
|
|
226
|
+
private registerOnLineListener;
|
|
227
|
+
private deregisterOnLineListener;
|
|
228
|
+
getTrackIdForReceiver(receiver: RTCRtpReceiver): string | undefined;
|
|
229
|
+
}
|
|
230
|
+
export type EngineEventCallbacks = {
|
|
231
|
+
connected: (joinResp: JoinResponse) => void;
|
|
232
|
+
disconnected: (reason?: DisconnectReason) => void;
|
|
233
|
+
resuming: () => void;
|
|
234
|
+
resumed: () => void;
|
|
235
|
+
restarting: () => void;
|
|
236
|
+
restarted: () => void;
|
|
237
|
+
signalResumed: () => void;
|
|
238
|
+
signalRestarted: (joinResp: JoinResponse) => void;
|
|
239
|
+
closing: () => void;
|
|
240
|
+
mediaTrackAdded: (track: MediaStreamTrack, streams: MediaStream, receiver: RTCRtpReceiver) => void;
|
|
241
|
+
activeSpeakersUpdate: (speakers: Array<SpeakerInfo>) => void;
|
|
242
|
+
dataPacketReceived: (packet: DataPacket, encryptionType: Encryption_Type) => void;
|
|
243
|
+
transcriptionReceived: (transcription: Transcription) => void;
|
|
244
|
+
transportsCreated: (publisher: PCTransport, subscriber?: PCTransport) => void;
|
|
245
|
+
/** @internal */
|
|
246
|
+
trackSenderAdded: (track: Track, sender: RTCRtpSender) => void;
|
|
247
|
+
rtpVideoMapUpdate: (rtpMap: Map<number, VideoCodec>) => void;
|
|
248
|
+
dcBufferStatusChanged: (isLow: boolean, kind: DataChannelKind) => void;
|
|
249
|
+
participantUpdate: (infos: ParticipantInfo[]) => void;
|
|
250
|
+
roomUpdate: (room: RoomModel) => void;
|
|
251
|
+
roomMoved: (room: RoomMovedResponse) => void;
|
|
252
|
+
connectionQualityUpdate: (update: ConnectionQualityUpdate) => void;
|
|
253
|
+
speakersChanged: (speakerUpdates: SpeakerInfo[]) => void;
|
|
254
|
+
streamStateChanged: (update: StreamStateUpdate) => void;
|
|
255
|
+
subscriptionError: (resp: SubscriptionResponse) => void;
|
|
256
|
+
subscriptionPermissionUpdate: (update: SubscriptionPermissionUpdate) => void;
|
|
257
|
+
subscribedQualityUpdate: (update: SubscribedQualityUpdate) => void;
|
|
258
|
+
localTrackUnpublished: (unpublishedResponse: TrackUnpublishedResponse) => void;
|
|
259
|
+
localTrackSubscribed: (trackSid: string) => void;
|
|
260
|
+
remoteMute: (trackSid: string, muted: boolean) => void;
|
|
261
|
+
offline: () => void;
|
|
262
|
+
signalRequestResponse: (response: RequestResponse) => void;
|
|
263
|
+
signalConnected: (joinResp: JoinResponse) => void;
|
|
264
|
+
publishDataTrackResponse: (event: PublishDataTrackResponse) => void;
|
|
265
|
+
unPublishDataTrackResponse: (event: UnpublishDataTrackResponse) => void;
|
|
266
|
+
dataTrackSubscriberHandles: (event: DataTrackSubscriberHandles) => void;
|
|
267
|
+
dataTrackPacketReceived: (packet: Uint8Array) => void;
|
|
268
|
+
joined: (joinResponse: JoinResponse) => void;
|
|
269
|
+
tokenRefreshed: (token: string) => void;
|
|
270
|
+
serverRegionsReported: (regions: RegionSettings) => void;
|
|
271
|
+
requestSubscribedCodecRefresh: () => void;
|
|
272
|
+
};
|
|
273
|
+
export interface RegionStrategy {
|
|
274
|
+
getNextUrl(abortSignal?: AbortSignal): Promise<string | null>;
|
|
275
|
+
resetAttempts(): void;
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=RTCEngine.d.ts.map
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
/** Controls reconnecting of the client */
|
|
2
|
-
export interface ReconnectPolicy {
|
|
3
|
-
/** Called after disconnect was detected
|
|
4
|
-
*
|
|
5
|
-
* @returns {number | null} Amount of time in milliseconds to delay the next reconnect attempt, `null` signals to stop retrying.
|
|
6
|
-
*/
|
|
7
|
-
nextRetryDelayInMs(context: ReconnectContext): number | null;
|
|
8
|
-
}
|
|
9
|
-
export interface ReconnectContext {
|
|
10
|
-
/**
|
|
11
|
-
* Number of failed reconnect attempts
|
|
12
|
-
*/
|
|
13
|
-
readonly retryCount: number;
|
|
14
|
-
/**
|
|
15
|
-
* Elapsed amount of time in milliseconds since the disconnect.
|
|
16
|
-
*/
|
|
17
|
-
readonly elapsedMs: number;
|
|
18
|
-
/**
|
|
19
|
-
* Reason for retrying
|
|
20
|
-
*/
|
|
21
|
-
readonly retryReason?: Error;
|
|
22
|
-
readonly serverUrl?: string;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=ReconnectPolicy.d.ts.map
|
|
1
|
+
/** Controls reconnecting of the client */
|
|
2
|
+
export interface ReconnectPolicy {
|
|
3
|
+
/** Called after disconnect was detected
|
|
4
|
+
*
|
|
5
|
+
* @returns {number | null} Amount of time in milliseconds to delay the next reconnect attempt, `null` signals to stop retrying.
|
|
6
|
+
*/
|
|
7
|
+
nextRetryDelayInMs(context: ReconnectContext): number | null;
|
|
8
|
+
}
|
|
9
|
+
export interface ReconnectContext {
|
|
10
|
+
/**
|
|
11
|
+
* Number of failed reconnect attempts
|
|
12
|
+
*/
|
|
13
|
+
readonly retryCount: number;
|
|
14
|
+
/**
|
|
15
|
+
* Elapsed amount of time in milliseconds since the disconnect.
|
|
16
|
+
*/
|
|
17
|
+
readonly elapsedMs: number;
|
|
18
|
+
/**
|
|
19
|
+
* Reason for retrying
|
|
20
|
+
*/
|
|
21
|
+
readonly retryReason?: Error;
|
|
22
|
+
readonly serverUrl?: string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ReconnectPolicy.d.ts.map
|