@vkontakte/calls-sdk 2.8.13-dev.939924e7.0 → 2.8.13-dev.992d27aa.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.
@@ -130,6 +130,11 @@ export declare class MediaSource extends EventEmitter {
130
130
  updateNoiseSuppression(): Promise<void>;
131
131
  videoEffect(effect: IEffect | null): Promise<void>;
132
132
  audioEffect(audioEffectParams: AudioEffectParams | null): Promise<void>;
133
+ /**
134
+ * Копия микрофона всегда включена: clone() копирует enabled,
135
+ * а VAD выключает трек микрофона, пока человек молчит
136
+ */
137
+ private _cloneMicAudioTrack;
133
138
  getAudioShareTrack(): MediaStreamTrack | null;
134
139
  private handleVideoEffectsLowFps;
135
140
  private get _frameRate();
@@ -2,7 +2,7 @@ import type { IEffect } from '@vkontakte/calls-video-effects';
2
2
  import type { RGBTuple } from '@vkontakte/calls-vmoji';
3
3
  import BaseApi from '../../abstract/BaseApi';
4
4
  import BaseLogger from '../../abstract/BaseLogger';
5
- import type { AddParticipantParams } from '../../types/AddParticipantParams';
5
+ import { AddParticipantParams } from '../../abstract/BaseSignaling';
6
6
  import ConversationFeature from '../../enums/ConversationFeature';
7
7
  import ConversationOption from '../../enums/ConversationOption';
8
8
  import MediaOption from '../../enums/MediaOption';
@@ -264,8 +264,8 @@ export default class Conversation extends EventEmitter {
264
264
  private _isWaitingForPromotion;
265
265
  private _getWaitingForPromotionStatus;
266
266
  putHandsDown(): Promise<void>;
267
- requestKeyFrame(participantStreamDescription: ParticipantStreamDescription): Promise<SignalingMessage>;
268
- requestTestMode(consumerCommand: string, producerCommand: string): Promise<SignalingMessage>;
267
+ requestKeyFrame(participantStreamDescription: ParticipantStreamDescription): Promise<void | SignalingMessage>;
268
+ requestTestMode(consumerCommand: string, producerCommand: string): Promise<void | SignalingMessage>;
269
269
  updateDisplayLayout(layouts: ParticipantLayout[]): Promise<void>;
270
270
  requestDisplayLayout(requests: DisplayLayoutRequest[]): Promise<void>;
271
271
  feedback(key: string): Promise<SignalingMessage>;
@@ -1,4 +1,4 @@
1
- import type Signaling from '../../default/Signaling';
1
+ import BaseSignaling from '../../abstract/BaseSignaling';
2
2
  import { type DebugLogger } from '../../static/Debug';
3
3
  import StatEventCollector from '../stat/StatEventCollector';
4
4
  export default class ScreenCaptureSender {
@@ -25,7 +25,7 @@ export default class ScreenCaptureSender {
25
25
  private readonly _maxFrameDelay;
26
26
  private readonly _debug;
27
27
  private readonly _logger;
28
- constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: Signaling, fastSharing: boolean, debug?: DebugLogger, logger?: StatEventCollector | null);
28
+ constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling, fastSharing: boolean, debug?: DebugLogger, logger?: StatEventCollector | null);
29
29
  private _handleQueue;
30
30
  /**
31
31
  * Очищает очередь до опорного кадра
@@ -1,16 +1,16 @@
1
- import type Signaling from '../../default/Signaling';
1
+ import BaseSignaling from '../../abstract/BaseSignaling';
2
2
  import TransportState from '../../enums/TransportState';
3
3
  import EventEmitter from '../EventEmitter';
4
4
  import { MediaSource } from '../MediaSource';
5
5
  export default abstract class BaseTransport extends EventEmitter {
6
- protected readonly _signaling: Signaling;
6
+ protected readonly _signaling: BaseSignaling;
7
7
  protected readonly _mediaSource: MediaSource;
8
8
  protected _state: TransportState;
9
9
  protected _pc: RTCPeerConnection | null;
10
10
  private readonly _onFirstMediaSent;
11
11
  private _firstMediaSentProbe;
12
12
  private _firstMediaSentProbeStopped;
13
- protected constructor(signaling: Signaling, mediaSource: MediaSource, onFirstMediaSent?: (() => void) | null);
13
+ protected constructor(signaling: BaseSignaling, mediaSource: MediaSource, onFirstMediaSent?: (() => void) | null);
14
14
  getState(): TransportState;
15
15
  stopFirstMediaSentProbe(): void;
16
16
  abstract close(error?: Error): void;
@@ -1,4 +1,4 @@
1
- import type Signaling from '../../default/Signaling';
1
+ import BaseSignaling from '../../abstract/BaseSignaling';
2
2
  import { type DebugLogger } from '../../static/Debug';
3
3
  import { StatResult } from '../../types/Statistics';
4
4
  import EventEmitter from '../EventEmitter';
@@ -32,7 +32,7 @@ export default class DirectStatReporter extends EventEmitter {
32
32
  private _lastStatSentTimestamp;
33
33
  private _currentState;
34
34
  private readonly _debug;
35
- constructor(signaling: Signaling, debug?: DebugLogger);
35
+ constructor(signaling: BaseSignaling, debug?: DebugLogger);
36
36
  private _calcRttRating;
37
37
  private _calcLossRating;
38
38
  private _calcBitrateRating;
@@ -1,5 +1,5 @@
1
1
  import type { AnimojiReceiver, AnimojiSender } from '@vkontakte/calls-vmoji';
2
- import type Signaling from '../../default/Signaling';
2
+ import BaseSignaling from '../../abstract/BaseSignaling';
3
3
  import { type DebugLogger } from '../../static/Debug';
4
4
  import { ParticipantId } from '../../types/Participant';
5
5
  import ServerSettings from '../../types/ServerSettings';
@@ -50,7 +50,7 @@ export default class DirectTransport extends BaseTransport {
50
50
  private readonly _logger;
51
51
  private readonly _statAggregator;
52
52
  private readonly _codecStatsAggregator;
53
- constructor(participantId: ParticipantId, isMaster: boolean, signaling: Signaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
53
+ constructor(participantId: ParticipantId, isMaster: boolean, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
54
54
  get participantId(): ParticipantId;
55
55
  updateStatisticsInterval(): void;
56
56
  private _isDeadConnection;
@@ -1,4 +1,4 @@
1
- import type Signaling from '../../default/Signaling';
1
+ import BaseSignaling from '../../abstract/BaseSignaling';
2
2
  import { type DebugLogger } from '../../static/Debug';
3
3
  import EventEmitter from '../EventEmitter';
4
4
  import { StatAggregator } from '../stat/StatAggregator';
@@ -18,7 +18,7 @@ export default class PerfStatReporter extends EventEmitter {
18
18
  private readonly _directTopology;
19
19
  private readonly _debug;
20
20
  private readonly _statAggregator;
21
- constructor(transport: ServerTransport | DirectTransport, signaling: Signaling, statAggregator?: StatAggregator | null, directTopology?: boolean, debug?: DebugLogger);
21
+ constructor(transport: ServerTransport | DirectTransport, signaling: BaseSignaling, statAggregator?: StatAggregator | null, directTopology?: boolean, debug?: DebugLogger);
22
22
  destroy(): void;
23
23
  static getEstimatedPerformanceIndex(): number;
24
24
  private _handleStats;
@@ -1,5 +1,5 @@
1
1
  import type { AnimojiReceiver, AnimojiSender } from '@vkontakte/calls-vmoji';
2
- import type Signaling from '../../default/Signaling';
2
+ import BaseSignaling from '../../abstract/BaseSignaling';
3
3
  import { type DebugLogger } from '../../static/Debug';
4
4
  import { ParticipantId } from '../../types/Participant';
5
5
  import ServerSettings from '../../types/ServerSettings';
@@ -49,7 +49,7 @@ export default class ServerTransport extends BaseTransport {
49
49
  private readonly _peerConnectionStats;
50
50
  private readonly _codecStatsAggregator;
51
51
  private readonly _simulcast;
52
- constructor(signaling: Signaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
52
+ constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
53
53
  updateStatisticsInterval(): void;
54
54
  open(observer?: boolean): void;
55
55
  close(error?: Error): void;
@@ -1,4 +1,4 @@
1
- import type Signaling from '../../default/Signaling';
1
+ import BaseSignaling from '../../abstract/BaseSignaling';
2
2
  import { type DebugLogger } from '../../static/Debug';
3
3
  import type VideoSettings from '../../types/VideoSettings';
4
4
  import { MediaSource } from '../MediaSource';
@@ -12,7 +12,7 @@ export default class SimulcastSender {
12
12
  private readonly _getCameraSettings;
13
13
  private readonly _debug;
14
14
  private readonly _logger;
15
- constructor(signaling: Signaling, mediaSource: MediaSource, getCameraSettings: () => VideoSettings | null, debug?: DebugLogger, logger?: StatEventCollector | null);
15
+ constructor(signaling: BaseSignaling, mediaSource: MediaSource, getCameraSettings: () => VideoSettings | null, debug?: DebugLogger, logger?: StatEventCollector | null);
16
16
  configureFromRemoteOffer(pc: RTCPeerConnection): Promise<void>;
17
17
  finalizeAnswer(sdp: string): string;
18
18
  sync({ force }?: {
@@ -1,5 +1,5 @@
1
1
  import type { AnimojiSvgData, RGBTuple } from '@vkontakte/calls-vmoji';
2
- import type Signaling from '../../default/Signaling';
2
+ import BaseSignaling from '../../abstract/BaseSignaling';
3
3
  import TransportState from '../../enums/TransportState';
4
4
  import TransportTopology from '../../enums/TransportTopology';
5
5
  import { type DebugLogger } from '../../static/Debug';
@@ -50,8 +50,9 @@ export declare class Transport extends EventEmitter {
50
50
  private readonly _codecStatsAggregator;
51
51
  private readonly _onFirstMediaSent;
52
52
  private _firstMediaSentProbeStopped;
53
- private _vadController;
54
- constructor(topology: TransportTopology, signaling: Signaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
53
+ private readonly _isParticipantAccepted;
54
+ private readonly _vadGate;
55
+ constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null, isParticipantAccepted?: (participantId: ParticipantId) => boolean);
55
56
  updateSettings(settings: ServerSettings): void;
56
57
  updateStatisticsInterval(): void;
57
58
  allocate(participantId: ParticipantId, isMaster?: boolean): void;
@@ -97,8 +98,8 @@ export declare class Transport extends EventEmitter {
97
98
  private _onAnimojiStream;
98
99
  /** Обработчик, досылающий MediaSourceEvent.SOURCE_CHANGED событие до аллокации транспортов */
99
100
  private _onAnimojiStatus;
100
- private _createVad;
101
101
  private _updateVadTrack;
102
+ private _updateVadParticipants;
102
103
  private _createAnimojiTransport;
103
104
  private _removeAnimojiTransport;
104
105
  getStreamWaitingTimeMs(streamId: string, targetRtpTimestamp: number): number;
@@ -0,0 +1,37 @@
1
+ import TransportTopology from '../../enums/TransportTopology';
2
+ import { type DebugLogger } from '../../static/Debug';
3
+ /**
4
+ * Включает VAD только в серверном звонке с transparent audio, когда собеседников больше,
5
+ * чем треков transparent audio. Тогда сервер отдаёт треки самым громким участникам,
6
+ * и VAD не даёт шуму молчащего занять трек. Себя не считаем: сервер выбирает из остальных.
7
+ *
8
+ * Модель загружается при первом включении. Дальше VAD только ставится на паузу,
9
+ * чтобы не загружать модель заново при каждом входе и выходе участника.
10
+ */
11
+ export declare class VadGate {
12
+ private _topology;
13
+ private _participantsCount;
14
+ private readonly _taTrackIds;
15
+ private _sendTrack;
16
+ private _controller;
17
+ private _enabled;
18
+ private _updateTimer;
19
+ private _initFailed;
20
+ private _destroyed;
21
+ private readonly _debug;
22
+ constructor(topology: TransportTopology, debug?: DebugLogger);
23
+ setTopology(topology: TransportTopology): void;
24
+ /** Число собеседников в звонке без локального участника */
25
+ setParticipantsCount(count: number): void;
26
+ addRemoteTrack(trackId: string): void;
27
+ removeRemoteTrack(trackId: string): void;
28
+ /** При закрытии серверного транспорта события об удалении треков не приходят */
29
+ resetRemoteTracks(): void;
30
+ setSendTrack(track: MediaStreamTrack | null): void;
31
+ destroy(): void;
32
+ private _isAllowed;
33
+ private _update;
34
+ private _applyConditions;
35
+ private _createController;
36
+ private _applyState;
37
+ }
@@ -1,5 +1,4 @@
1
- import EventEmitter from '../classes/EventEmitter';
2
- import type { AddParticipantParams } from '../types/AddParticipantParams';
1
+ import BaseSignaling, { AddParticipantParams } from '../abstract/BaseSignaling';
3
2
  import { ParticipantIdRegistry } from '../classes/ParticipantIdRegistry';
4
3
  import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
5
4
  import { StatAggregator } from '../classes/stat/StatAggregator';
@@ -16,7 +15,6 @@ import { type DebugLogger } from '../static/Debug';
16
15
  import { JSONObject } from '../static/Json';
17
16
  import { IAsrStartParams, IAsrStopParams } from '../types/Asr';
18
17
  import { ChangeSimulcast } from '../types/ChangeSimulcast';
19
- import ConversationResponse from '../types/ConversationResponse';
20
18
  import MediaModifiers from '../types/MediaModifiers';
21
19
  import MediaSettings from '../types/MediaSettings';
22
20
  import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
@@ -29,9 +27,10 @@ import { StreamDescriptionString } from '../types/ParticipantStreamDescription';
29
27
  import { PerfStatReport } from '../types/PerfStatReporter';
30
28
  import SignalingMessage, { GetParticipantsSignalingResponse, GetRoomsSignalingResponse } from '../types/SignalingMessage';
31
29
  import { IPublishStreamData, IStartStreamData, IStopStreamData } from '../types/Streams';
32
- export default class Signaling extends EventEmitter {
33
- private session;
30
+ export default class Signaling extends BaseSignaling {
31
+ private transport;
34
32
  private sequence;
33
+ private lastStamp;
35
34
  private websocketCommandsQueue;
36
35
  private datachannelCommandsQueue;
37
36
  private incomingCache;
@@ -40,9 +39,12 @@ export default class Signaling extends EventEmitter {
40
39
  private connectionType;
41
40
  private conversationResolve;
42
41
  private conversationReject;
42
+ private connected;
43
43
  private listenersReady;
44
+ private peerId;
44
45
  /** Когда началась череда падений соединения, от неё считаем *_timeout */
45
46
  private reconnectStartedAt;
47
+ private connectionMessageWaitTimer;
46
48
  private participantIdRegistry;
47
49
  private producerNotificationDataChannel;
48
50
  private producerCommandDataChannel;
@@ -53,10 +55,13 @@ export default class Signaling extends EventEmitter {
53
55
  private readonly _statAggregator;
54
56
  private readonly _statPings;
55
57
  private readonly _statSignalingCommands;
58
+ private static get WAIT_CONNECTION_DELAY();
56
59
  private static get WAIT_RESPONSE_DELAY();
57
60
  get ready(): boolean;
58
61
  constructor(debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, statPings?: StatPings | null, statSignalingCommands?: StatSignalingCommands | null);
59
62
  setAbortSignal(signal: AbortSignal | undefined): void;
63
+ setEndpoint(endpoint: string): void;
64
+ setWebTransportEndpoint(endpoint: string | null): void;
60
65
  setParticipantIdRegistry(participantIdRegistry: ParticipantIdRegistry): void;
61
66
  setProducerNotificationDataChannel(dataChannel: RTCDataChannel): void;
62
67
  setProducerCommandDataChannel(dataChannel: RTCDataChannel): void;
@@ -65,7 +70,7 @@ export default class Signaling extends EventEmitter {
65
70
  /**
66
71
  * Open a connection with a signaling server
67
72
  */
68
- connect(connectionType: SignalingConnectionType, conversation: ConversationResponse): Promise<SignalingMessage.Connection>;
73
+ connect(connectionType: SignalingConnectionType): Promise<SignalingMessage.Connection>;
69
74
  getNextCommandSequenceNumber(): number;
70
75
  hangup(reason: string): Promise<SignalingMessage>;
71
76
  sendCandidate(participantId: ParticipantId, candidate: RTCIceCandidateInit): Promise<SignalingMessage>;
@@ -175,12 +180,14 @@ export default class Signaling extends EventEmitter {
175
180
  private _serializeBinary;
176
181
  private _serializeJson;
177
182
  private _convertDisplayLayout;
183
+ private _waitConnectionMessage;
184
+ private _stopWaitConnectionMessage;
178
185
  private _onTransportConnecting;
179
- private _onSessionFailed;
180
- private _onSessionReconnectScheduled;
186
+ private _onTransportFailed;
187
+ private _onTransportReconnectScheduled;
181
188
  /** Попыток восстановить соединение больше не будет: отправляем, сколько длилась череда падений */
182
189
  private _logReconnectTimeout;
183
- private _onSessionInactive;
190
+ private _onTransportConnectionDead;
184
191
  private _attachNotificationCallError;
185
192
  private _createSignalingCallError;
186
193
  private _getSocketType;
@@ -0,0 +1,80 @@
1
+ import SignalingConnectionType from '../enums/SignalingConnectionType';
2
+ import { SignalingTransportType } from '../enums/SignalingTransportStat';
3
+ import { DebugLogger } from '../static/Debug';
4
+ export declare enum SignalingTransportFailure {
5
+ EMPTY_ENDPOINT = "EMPTY_ENDPOINT",
6
+ NETWORK_ERROR = "NETWORK_ERROR",
7
+ RECONNECT_TIMEOUT = "RECONNECT_TIMEOUT",
8
+ ABORTED = "ABORTED"
9
+ }
10
+ export type SignalingTransportFailedEvent = {
11
+ failure: SignalingTransportFailure;
12
+ message: string;
13
+ source: SignalingTransportType;
14
+ remote?: boolean;
15
+ };
16
+ export type SignalingTransportReconnectEvent = {
17
+ count: number;
18
+ delay: number;
19
+ };
20
+ export type SignalingTransportConnectingEvent = {
21
+ connectionType: SignalingConnectionType;
22
+ source: SignalingTransportType;
23
+ };
24
+ export type SignalingTransportHandlers = {
25
+ onConnecting: (event: SignalingTransportConnectingEvent) => void;
26
+ onOpen: () => void;
27
+ onMessage: (event: MessageEvent) => void;
28
+ onError: (event: Event) => void;
29
+ onClose: (event: CloseEvent) => void;
30
+ onFailed: (event: SignalingTransportFailedEvent) => void;
31
+ onReconnectScheduled: (event: SignalingTransportReconnectEvent) => void;
32
+ onConnectionDead: () => void;
33
+ };
34
+ export default class SignalingTransport {
35
+ private readonly handlers;
36
+ private socket;
37
+ private endpoint;
38
+ private wtEndpoint;
39
+ private peerId;
40
+ private lastStamp;
41
+ private connectionType;
42
+ private reconnectCount;
43
+ private reconnectTimer;
44
+ private reconnectDeadlineTimer;
45
+ private doctorTimer;
46
+ private forceWebSocket;
47
+ private abortSignal;
48
+ private manualClose;
49
+ private currentType;
50
+ private readonly _debug;
51
+ constructor(debug: DebugLogger | undefined, handlers: SignalingTransportHandlers);
52
+ get readyState(): number | null;
53
+ get type(): SignalingTransportType;
54
+ setEndpoint(endpoint: string): void;
55
+ setWebTransportEndpoint(endpoint: string | null): void;
56
+ setPeerId(peerId: number | null): void;
57
+ setLastStamp(lastStamp: number): void;
58
+ setAbortSignal(signal?: AbortSignal): void;
59
+ onConnectionRestored(): void;
60
+ connect(connectionType: SignalingConnectionType): void;
61
+ close(code?: number): void;
62
+ send(data: string | ArrayBuffer): Promise<void>;
63
+ private _connect;
64
+ private _connectWebTransport;
65
+ private _connectWebSocket;
66
+ private _setSocketHandlers;
67
+ private _buildUrl;
68
+ private _canUseWebTransport;
69
+ private _onOpen;
70
+ private _onMessage;
71
+ private _onError;
72
+ private _onClose;
73
+ private _disconnect;
74
+ private _scheduleReconnect;
75
+ private _startReconnectDeadline;
76
+ private _stopReconnectDeadline;
77
+ private _getReconnectDelay;
78
+ private _startDoctor;
79
+ private _stopDoctor;
80
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.13-dev.939924e7.0",
3
+ "version": "2.8.13-dev.992d27aa.0",
4
4
  "author": "vk.com",
5
5
  "description": "Library for video calls based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
@@ -14,9 +14,9 @@
14
14
  "**/*.d.ts"
15
15
  ],
16
16
  "dependencies": {
17
- "@vkontakte/calls-audio-effects": "1.4.1",
17
+ "@vkontakte/calls-audio-effects": "1.5.0",
18
18
  "@vkontakte/calls-video-effects": "2.2.3-beta.7",
19
- "@vkontakte/calls-vmoji": "1.0.10-beta.17",
19
+ "@vkontakte/calls-vmoji": "1.0.10",
20
20
  "@vkontakte/libvpx": "2.0.9",
21
21
  "bit-buffer": "0.2.5",
22
22
  "fflate": "^0.8.2",
@@ -108,41 +108,19 @@ export type ParamsObject = {
108
108
  wtsBase: string;
109
109
  /** @hidden */
110
110
  wssToken: string;
111
- /**
112
- * Начальная задержка повторного подключения сигналинга; удваивается с каждой попыткой, мс.
113
- * _По умолчанию `1000`_
114
- * @hidden
115
- */
111
+ /** @hidden */
116
112
  signalingReconnectDelay: number;
117
- /**
118
- * Максимальная задержка между повторными подключениями сигналинга, мс.
119
- * _По умолчанию `5000`_
120
- * @hidden
121
- */
113
+ /** @hidden */
122
114
  signalingReconnectMaxDelay: number;
123
- /**
124
- * Общий лимит времени первого подключения и резервный срок восстановления без серверного activityTimeout, мс.
125
- * _По умолчанию `60000`_
126
- * @hidden
127
- */
115
+ /** @hidden */
116
+ signalingReconnectMaxCount: number;
117
+ /** @hidden */
128
118
  signalingReconnectMaxDuration: number;
129
- /**
130
- * Время ожидания уведомления connection после открытия сокета; пинги не продлевают ожидание, мс.
131
- * _По умолчанию `10000`_
132
- * @hidden
133
- */
119
+ /** @hidden */
134
120
  waitConnectionDelay: number;
135
- /**
136
- * Время ожидания ответа на команду сигналинга; во время восстановления ожидание может продлеваться, мс.
137
- * _По умолчанию `10000`_
138
- * @hidden
139
- */
121
+ /** @hidden */
140
122
  waitResponseDelay: number;
141
- /**
142
- * Время ожидания открытия сокета, а после установления сессии — резервное время ожидания ping без серверного activityTimeout, мс.
143
- * _По умолчанию `15000`_
144
- * @hidden
145
- */
123
+ /** @hidden */
146
124
  waitMessageDelay: number;
147
125
  /** @hidden */
148
126
  waitAnotherTabDelay: number;
@@ -1047,6 +1025,7 @@ export default abstract class Params {
1047
1025
  static set wssToken(value: string);
1048
1026
  static get signalingReconnectDelay(): number;
1049
1027
  static get signalingReconnectMaxDelay(): number;
1028
+ static get signalingReconnectMaxCount(): number;
1050
1029
  static get signalingReconnectMaxDuration(): number;
1051
1030
  static get waitConnectionDelay(): number;
1052
1031
  static get waitResponseDelay(): number;
@@ -383,8 +383,6 @@ declare namespace SignalingMessage {
383
383
  conversation: Conversation;
384
384
  conversationParams: {
385
385
  serverTime: number;
386
- /** Таймаут удаления неактивного участника сервером, мс. */
387
- activityTimeout?: number;
388
386
  };
389
387
  isConcurrent: boolean;
390
388
  peerId: PeerId;
@@ -1,6 +0,0 @@
1
- export declare class SignalingDisposedError extends Error {
2
- constructor(command?: string);
3
- }
4
- export declare class ProducerConnectionClosedError extends Error {
5
- constructor(command?: string);
6
- }
@@ -1,92 +0,0 @@
1
- import SignalingConnectionType from '../enums/SignalingConnectionType';
2
- import { SignalingTransportType } from '../enums/SignalingTransportStat';
3
- import { DebugLogger } from '../static/Debug';
4
- import SignalingMessage from '../types/SignalingMessage';
5
- export declare enum SignalingSessionFailure {
6
- EMPTY_ENDPOINT = "EMPTY_ENDPOINT",
7
- CONNECTION_TIMEOUT = "CONNECTION_TIMEOUT",
8
- RECONNECT_TIMEOUT = "RECONNECT_TIMEOUT",
9
- ABORTED = "ABORTED"
10
- }
11
- export type SignalingSessionFailedEvent = {
12
- failure: SignalingSessionFailure;
13
- message: string;
14
- source: SignalingTransportType;
15
- remote?: boolean;
16
- };
17
- export type SignalingSessionReconnectEvent = {
18
- count: number;
19
- delay: number;
20
- };
21
- export type SignalingSessionConnectingEvent = {
22
- connectionType: SignalingConnectionType;
23
- source: SignalingTransportType;
24
- };
25
- export type SignalingSessionHandlers = {
26
- onConnecting: (event: SignalingSessionConnectingEvent) => void;
27
- onOpen: () => void;
28
- onMessage: (message: SignalingMessage | 'ping') => void;
29
- onParseError: (error: unknown, data: unknown) => void;
30
- onError: (event: Event) => void;
31
- onClose: (event: CloseEvent) => void;
32
- onFailed: (event: SignalingSessionFailedEvent) => void;
33
- onReconnectScheduled: (event: SignalingSessionReconnectEvent) => void;
34
- onInactive: () => void;
35
- };
36
- export default class SignalingSession {
37
- private readonly _debug;
38
- private readonly handlers;
39
- private socket;
40
- private state;
41
- private endpoint;
42
- private wtEndpoint;
43
- private peerId;
44
- private lastStamp;
45
- private connectionType;
46
- private reconnectCount;
47
- /** Таймер задержки перед следующей попыткой подключения. */
48
- private retryTimer;
49
- /** Таймер ожидания нотификации connection при подключении или восстановлении; повторные попытки не продлевают общий срок. */
50
- private connectionDeadlineTimer;
51
- /** Таймер текущей попытки: сначала ждёт открытия сокета, затем перезапускается для ожидания нотификации connection. */
52
- private attemptTimer;
53
- /** Таймер ожидания ping в установленной сессии; обычные сообщения не продлевают ожидание. */
54
- private pingTimer;
55
- private pingTimeoutMs;
56
- private reconnectTimeoutMs;
57
- private forceWebSocket;
58
- private hasEstablished;
59
- private abortSignal;
60
- private currentType;
61
- private readonly onAbort;
62
- constructor(_debug: DebugLogger | undefined, handlers: SignalingSessionHandlers);
63
- get active(): boolean;
64
- get established(): boolean;
65
- get canSend(): boolean;
66
- get type(): SignalingTransportType;
67
- getPeerId(): number | null;
68
- setAbortSignal(signal?: AbortSignal): void;
69
- connect(connectionType: SignalingConnectionType, endpoints: {
70
- endpoint: string;
71
- webTransportEndpoint?: string | null;
72
- }): void;
73
- close(code?: number): void;
74
- send(data: string): Promise<void>;
75
- private _connect;
76
- private _buildUrl;
77
- private _onMessage;
78
- private _updateRecoveryStamp;
79
- private _onAbort;
80
- private _retry;
81
- private _disconnect;
82
- private _startRetryTimer;
83
- private _stopRetryTimer;
84
- private _startConnectionDeadlineTimer;
85
- private _stopConnectionDeadlineTimer;
86
- private _startAttemptTimer;
87
- private _stopAttemptTimer;
88
- private _updateTimeouts;
89
- private _startPingTimer;
90
- private _stopPingTimer;
91
- private _fail;
92
- }
@@ -1,18 +0,0 @@
1
- /**
2
- * Параметры добавления пользователя в звонок
3
- */
4
- export interface AddParticipantParams {
5
- /**
6
- * @deprecated
7
- */
8
- showChatHistory?: boolean;
9
- ttChat?: boolean;
10
- /**
11
- * Удалить юзера из бан-листа. Доступно только админу звонка
12
- */
13
- unban?: boolean;
14
- /**
15
- * JSON.stringify(\{show_chat_history: boolean\})
16
- */
17
- payload?: string;
18
- }