@vkontakte/calls-sdk 2.8.13-dev.90f6da61.0 → 2.8.13-dev.939924e7.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.
@@ -0,0 +1,6 @@
1
+ export declare class SignalingDisposedError extends Error {
2
+ constructor(command?: string);
3
+ }
4
+ export declare class ProducerConnectionClosedError extends Error {
5
+ constructor(command?: string);
6
+ }
@@ -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 { AddParticipantParams } from '../../abstract/BaseSignaling';
5
+ import type { AddParticipantParams } from '../../types/AddParticipantParams';
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<void | SignalingMessage>;
268
- requestTestMode(consumerCommand: string, producerCommand: string): Promise<void | SignalingMessage>;
267
+ requestKeyFrame(participantStreamDescription: ParticipantStreamDescription): Promise<SignalingMessage>;
268
+ requestTestMode(consumerCommand: string, producerCommand: string): Promise<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 BaseSignaling from '../../abstract/BaseSignaling';
1
+ import type Signaling from '../../default/Signaling';
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: BaseSignaling, fastSharing: boolean, debug?: DebugLogger, logger?: StatEventCollector | null);
28
+ constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: Signaling, fastSharing: boolean, debug?: DebugLogger, logger?: StatEventCollector | null);
29
29
  private _handleQueue;
30
30
  /**
31
31
  * Очищает очередь до опорного кадра
@@ -1,16 +1,16 @@
1
- import BaseSignaling from '../../abstract/BaseSignaling';
1
+ import type Signaling from '../../default/Signaling';
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: BaseSignaling;
6
+ protected readonly _signaling: Signaling;
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: BaseSignaling, mediaSource: MediaSource, onFirstMediaSent?: (() => void) | null);
13
+ protected constructor(signaling: Signaling, 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 BaseSignaling from '../../abstract/BaseSignaling';
1
+ import type Signaling from '../../default/Signaling';
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: BaseSignaling, debug?: DebugLogger);
35
+ constructor(signaling: Signaling, 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 BaseSignaling from '../../abstract/BaseSignaling';
2
+ import type Signaling from '../../default/Signaling';
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: BaseSignaling, 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: Signaling, 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 BaseSignaling from '../../abstract/BaseSignaling';
1
+ import type Signaling from '../../default/Signaling';
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: BaseSignaling, statAggregator?: StatAggregator | null, directTopology?: boolean, debug?: DebugLogger);
21
+ constructor(transport: ServerTransport | DirectTransport, signaling: Signaling, 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 BaseSignaling from '../../abstract/BaseSignaling';
2
+ import type Signaling from '../../default/Signaling';
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: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
52
+ constructor(signaling: Signaling, 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 BaseSignaling from '../../abstract/BaseSignaling';
1
+ import type Signaling from '../../default/Signaling';
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: BaseSignaling, mediaSource: MediaSource, getCameraSettings: () => VideoSettings | null, debug?: DebugLogger, logger?: StatEventCollector | null);
15
+ constructor(signaling: Signaling, 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 BaseSignaling from '../../abstract/BaseSignaling';
2
+ import type Signaling from '../../default/Signaling';
3
3
  import TransportState from '../../enums/TransportState';
4
4
  import TransportTopology from '../../enums/TransportTopology';
5
5
  import { type DebugLogger } from '../../static/Debug';
@@ -50,9 +50,8 @@ export declare class Transport extends EventEmitter {
50
50
  private readonly _codecStatsAggregator;
51
51
  private readonly _onFirstMediaSent;
52
52
  private _firstMediaSentProbeStopped;
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);
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);
56
55
  updateSettings(settings: ServerSettings): void;
57
56
  updateStatisticsInterval(): void;
58
57
  allocate(participantId: ParticipantId, isMaster?: boolean): void;
@@ -98,8 +97,8 @@ export declare class Transport extends EventEmitter {
98
97
  private _onAnimojiStream;
99
98
  /** Обработчик, досылающий MediaSourceEvent.SOURCE_CHANGED событие до аллокации транспортов */
100
99
  private _onAnimojiStatus;
100
+ private _createVad;
101
101
  private _updateVadTrack;
102
- private _updateVadParticipants;
103
102
  private _createAnimojiTransport;
104
103
  private _removeAnimojiTransport;
105
104
  getStreamWaitingTimeMs(streamId: string, targetRtpTimestamp: number): number;
@@ -1,4 +1,5 @@
1
- import BaseSignaling, { AddParticipantParams } from '../abstract/BaseSignaling';
1
+ import EventEmitter from '../classes/EventEmitter';
2
+ import type { AddParticipantParams } from '../types/AddParticipantParams';
2
3
  import { ParticipantIdRegistry } from '../classes/ParticipantIdRegistry';
3
4
  import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
4
5
  import { StatAggregator } from '../classes/stat/StatAggregator';
@@ -15,6 +16,7 @@ import { type DebugLogger } from '../static/Debug';
15
16
  import { JSONObject } from '../static/Json';
16
17
  import { IAsrStartParams, IAsrStopParams } from '../types/Asr';
17
18
  import { ChangeSimulcast } from '../types/ChangeSimulcast';
19
+ import ConversationResponse from '../types/ConversationResponse';
18
20
  import MediaModifiers from '../types/MediaModifiers';
19
21
  import MediaSettings from '../types/MediaSettings';
20
22
  import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
@@ -27,10 +29,9 @@ import { StreamDescriptionString } from '../types/ParticipantStreamDescription';
27
29
  import { PerfStatReport } from '../types/PerfStatReporter';
28
30
  import SignalingMessage, { GetParticipantsSignalingResponse, GetRoomsSignalingResponse } from '../types/SignalingMessage';
29
31
  import { IPublishStreamData, IStartStreamData, IStopStreamData } from '../types/Streams';
30
- export default class Signaling extends BaseSignaling {
31
- private transport;
32
+ export default class Signaling extends EventEmitter {
33
+ private session;
32
34
  private sequence;
33
- private lastStamp;
34
35
  private websocketCommandsQueue;
35
36
  private datachannelCommandsQueue;
36
37
  private incomingCache;
@@ -39,12 +40,9 @@ export default class Signaling extends BaseSignaling {
39
40
  private connectionType;
40
41
  private conversationResolve;
41
42
  private conversationReject;
42
- private connected;
43
43
  private listenersReady;
44
- private peerId;
45
44
  /** Когда началась череда падений соединения, от неё считаем *_timeout */
46
45
  private reconnectStartedAt;
47
- private connectionMessageWaitTimer;
48
46
  private participantIdRegistry;
49
47
  private producerNotificationDataChannel;
50
48
  private producerCommandDataChannel;
@@ -55,13 +53,10 @@ export default class Signaling extends BaseSignaling {
55
53
  private readonly _statAggregator;
56
54
  private readonly _statPings;
57
55
  private readonly _statSignalingCommands;
58
- private static get WAIT_CONNECTION_DELAY();
59
56
  private static get WAIT_RESPONSE_DELAY();
60
57
  get ready(): boolean;
61
58
  constructor(debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, statPings?: StatPings | null, statSignalingCommands?: StatSignalingCommands | null);
62
59
  setAbortSignal(signal: AbortSignal | undefined): void;
63
- setEndpoint(endpoint: string): void;
64
- setWebTransportEndpoint(endpoint: string | null): void;
65
60
  setParticipantIdRegistry(participantIdRegistry: ParticipantIdRegistry): void;
66
61
  setProducerNotificationDataChannel(dataChannel: RTCDataChannel): void;
67
62
  setProducerCommandDataChannel(dataChannel: RTCDataChannel): void;
@@ -70,7 +65,7 @@ export default class Signaling extends BaseSignaling {
70
65
  /**
71
66
  * Open a connection with a signaling server
72
67
  */
73
- connect(connectionType: SignalingConnectionType): Promise<SignalingMessage.Connection>;
68
+ connect(connectionType: SignalingConnectionType, conversation: ConversationResponse): Promise<SignalingMessage.Connection>;
74
69
  getNextCommandSequenceNumber(): number;
75
70
  hangup(reason: string): Promise<SignalingMessage>;
76
71
  sendCandidate(participantId: ParticipantId, candidate: RTCIceCandidateInit): Promise<SignalingMessage>;
@@ -180,14 +175,12 @@ export default class Signaling extends BaseSignaling {
180
175
  private _serializeBinary;
181
176
  private _serializeJson;
182
177
  private _convertDisplayLayout;
183
- private _waitConnectionMessage;
184
- private _stopWaitConnectionMessage;
185
178
  private _onTransportConnecting;
186
- private _onTransportFailed;
187
- private _onTransportReconnectScheduled;
179
+ private _onSessionFailed;
180
+ private _onSessionReconnectScheduled;
188
181
  /** Попыток восстановить соединение больше не будет: отправляем, сколько длилась череда падений */
189
182
  private _logReconnectTimeout;
190
- private _onTransportConnectionDead;
183
+ private _onSessionInactive;
191
184
  private _attachNotificationCallError;
192
185
  private _createSignalingCallError;
193
186
  private _getSocketType;
@@ -0,0 +1,92 @@
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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.13-dev.90f6da61.0",
3
+ "version": "2.8.13-dev.939924e7.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",
@@ -108,19 +108,41 @@ export type ParamsObject = {
108
108
  wtsBase: string;
109
109
  /** @hidden */
110
110
  wssToken: string;
111
- /** @hidden */
111
+ /**
112
+ * Начальная задержка повторного подключения сигналинга; удваивается с каждой попыткой, мс.
113
+ * _По умолчанию `1000`_
114
+ * @hidden
115
+ */
112
116
  signalingReconnectDelay: number;
113
- /** @hidden */
117
+ /**
118
+ * Максимальная задержка между повторными подключениями сигналинга, мс.
119
+ * _По умолчанию `5000`_
120
+ * @hidden
121
+ */
114
122
  signalingReconnectMaxDelay: number;
115
- /** @hidden */
116
- signalingReconnectMaxCount: number;
117
- /** @hidden */
123
+ /**
124
+ * Общий лимит времени первого подключения и резервный срок восстановления без серверного activityTimeout, мс.
125
+ * _По умолчанию `60000`_
126
+ * @hidden
127
+ */
118
128
  signalingReconnectMaxDuration: number;
119
- /** @hidden */
129
+ /**
130
+ * Время ожидания уведомления connection после открытия сокета; пинги не продлевают ожидание, мс.
131
+ * _По умолчанию `10000`_
132
+ * @hidden
133
+ */
120
134
  waitConnectionDelay: number;
121
- /** @hidden */
135
+ /**
136
+ * Время ожидания ответа на команду сигналинга; во время восстановления ожидание может продлеваться, мс.
137
+ * _По умолчанию `10000`_
138
+ * @hidden
139
+ */
122
140
  waitResponseDelay: number;
123
- /** @hidden */
141
+ /**
142
+ * Время ожидания открытия сокета, а после установления сессии — резервное время ожидания ping без серверного activityTimeout, мс.
143
+ * _По умолчанию `15000`_
144
+ * @hidden
145
+ */
124
146
  waitMessageDelay: number;
125
147
  /** @hidden */
126
148
  waitAnotherTabDelay: number;
@@ -1025,7 +1047,6 @@ export default abstract class Params {
1025
1047
  static set wssToken(value: string);
1026
1048
  static get signalingReconnectDelay(): number;
1027
1049
  static get signalingReconnectMaxDelay(): number;
1028
- static get signalingReconnectMaxCount(): number;
1029
1050
  static get signalingReconnectMaxDuration(): number;
1030
1051
  static get waitConnectionDelay(): number;
1031
1052
  static get waitResponseDelay(): number;
@@ -0,0 +1,18 @@
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
+ }
@@ -383,6 +383,8 @@ declare namespace SignalingMessage {
383
383
  conversation: Conversation;
384
384
  conversationParams: {
385
385
  serverTime: number;
386
+ /** Таймаут удаления неактивного участника сервером, мс. */
387
+ activityTimeout?: number;
386
388
  };
387
389
  isConcurrent: boolean;
388
390
  peerId: PeerId;
@@ -1,143 +0,0 @@
1
- import EventEmitter from '../classes/EventEmitter';
2
- import { ParticipantIdRegistry } from '../classes/ParticipantIdRegistry';
3
- import { TCapabilities } from '../types/Capabilities';
4
- import { StreamDescriptionString } from '../types/ParticipantStreamDescription';
5
- import { PerfStatReport } from '../types/PerfStatReporter';
6
- import { NetworkStatReport } from '../types/NetworkStatReport';
7
- import TransportTopology from '../enums/TransportTopology';
8
- import ConversationFeature from '../enums/ConversationFeature';
9
- import ConversationOption from '../enums/ConversationOption';
10
- import MediaOption from '../enums/MediaOption';
11
- import SignalingConnectionType from '../enums/SignalingConnectionType';
12
- import UserRole from '../enums/UserRole';
13
- import { JSONObject } from '../static/Json';
14
- import { IAsrStartParams, IAsrStopParams } from '../types/Asr';
15
- import ConversationResponse from '../types/ConversationResponse';
16
- import MediaModifiers from '../types/MediaModifiers';
17
- import MediaSettings from '../types/MediaSettings';
18
- import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
19
- import MuteStates from '../types/MuteStates';
20
- import { CompositeUserId, ParticipantId, ParticipantStateData } from '../types/Participant';
21
- import { ParticipantLayout, RequestKeyFrame, StopStream } from '../types/ParticipantLayout';
22
- import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
23
- import SignalingMessage, { GetParticipantsSignalingResponse, GetRoomsSignalingResponse } from '../types/SignalingMessage';
24
- import { ChangeSimulcast } from '../types/ChangeSimulcast';
25
- import { IPublishStreamData, IStartStreamData, IStopStreamData } from '../types/Streams';
26
- import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
27
- /**
28
- * Параметры добавления пользователя в звонок
29
- */
30
- export interface AddParticipantParams {
31
- /**
32
- * @deprecated
33
- */
34
- showChatHistory?: boolean;
35
- ttChat?: boolean;
36
- /**
37
- * Удалить юзера из бан-листа. Доступно только админу звонка
38
- */
39
- unban?: boolean;
40
- /**
41
- * JSON.stringify(\{show_chat_history: boolean\})
42
- */
43
- payload?: string;
44
- }
45
- export declare class SignalingDisposedError extends Error {
46
- constructor(command?: string);
47
- }
48
- export declare class ProducerConnectionClosedError extends Error {
49
- constructor(command?: string);
50
- }
51
- /**
52
- * Should trigger SignalingEvent.NOTIFICATION on notification message and SignalingEvent.FAILED on error
53
- * https://wiki.odkl.ru/display/projects/Signaling+API#SignalingAPI-Notifications
54
- * @hidden
55
- */
56
- export default abstract class BaseSignaling extends EventEmitter {
57
- protected _abortSignal?: AbortSignal;
58
- /**
59
- * Устанавливает сигнал прерывания для запуска звонка, если не успели отменить до установки соединения с другим участником, то он больше ни как не будет использоваться
60
- * @param signal - Сигнал прерывания или undefined для очистки
61
- */
62
- setAbortSignal(signal: AbortSignal | undefined): void;
63
- abstract connect(connectionType: SignalingConnectionType, conversation?: ConversationResponse): Promise<SignalingMessage.Connection>;
64
- abstract dispose(cause?: Error): void;
65
- abstract hangup(reason: string): Promise<SignalingMessage | void>;
66
- abstract acceptCall(mediaSettings: MediaSettings): Promise<SignalingMessage>;
67
- abstract sendSdp(participantId: ParticipantId, sdp: RTCSessionDescriptionInit, extraPayload?: Record<string, any>): Promise<SignalingMessage>;
68
- abstract sendCandidate(participantId: ParticipantId, candidate: RTCIceCandidateInit): Promise<SignalingMessage>;
69
- abstract changeMediaSettings(mediaSettings: MediaSettings): Promise<SignalingMessage>;
70
- abstract changeParticipantState(state: ParticipantStateData, compositeUserId?: CompositeUserId): Promise<SignalingMessage>;
71
- abstract hold(hold: boolean, capabilities?: TCapabilities): Promise<SignalingMessage>;
72
- abstract putHandsDown(): Promise<SignalingMessage>;
73
- abstract addParticipant(externalIds: CompositeUserId[], params?: AddParticipantParams): Promise<SignalingMessage>;
74
- abstract addParticipantLegacy(participantIds: CompositeUserId[], params?: AddParticipantParams): Promise<SignalingMessage>;
75
- abstract removeParticipant(participantId: CompositeUserId, ban?: boolean): Promise<SignalingMessage>;
76
- abstract allocateConsumer(description: RTCSessionDescription | null, capabilities: TCapabilities): Promise<SignalingMessage>;
77
- abstract acceptProducer(description: RTCSessionDescriptionInit, ssrcs: string[], sessionId: string): Promise<SignalingMessage>;
78
- /**
79
- * @deprecated Use updateDisplayLayout instead
80
- */
81
- abstract changePriorities(priorities: {
82
- [key: string]: number;
83
- }): Promise<SignalingMessage | void>;
84
- abstract updateDisplayLayout(layouts: {
85
- [streamDesc: StreamDescriptionString]: ParticipantLayout | StopStream | RequestKeyFrame;
86
- }): Promise<SignalingMessage | void>;
87
- abstract addMovie(data: IAddMovieParams): Promise<SignalingMessage>;
88
- abstract updateMovie(data: IUpdateMovieData): Promise<SignalingMessage>;
89
- abstract removeMovie(data: any): Promise<SignalingMessage>;
90
- abstract startUrlSharing(sharedUrl: string): Promise<SignalingMessage>;
91
- abstract stopUrlSharing(): Promise<SignalingMessage>;
92
- abstract updateRooms(rooms: Record<any, any>[], assignRandomly?: boolean): Promise<SignalingMessage>;
93
- abstract activateRooms(roomIds: number[], deactivate: boolean): Promise<SignalingMessage>;
94
- abstract switchRoom(toRoomId: number | null, participantId?: ParticipantId): Promise<SignalingMessage>;
95
- abstract getRooms(withParticipants: boolean): Promise<GetRoomsSignalingResponse>;
96
- abstract removeRooms(roomIds: number[]): Promise<SignalingMessage>;
97
- abstract startStream(data: IStartStreamData): Promise<SignalingMessage>;
98
- abstract stopStream(data: IStopStreamData): Promise<SignalingMessage>;
99
- abstract publishStream(data: IPublishStreamData): Promise<SignalingMessage>;
100
- abstract getRecordStatus(): Promise<SignalingMessage>;
101
- abstract switchTopology(topology: TransportTopology, force?: boolean): Promise<SignalingMessage>;
102
- abstract reportPerfStat(report: PerfStatReport): Promise<SignalingMessage>;
103
- abstract reportSharingStat(report: SharingStatReport): Promise<SignalingMessage>;
104
- abstract reportNetworkStat(report: NetworkStatReport): Promise<SignalingMessage>;
105
- abstract chatMessage(message: string, participantId: CompositeUserId | null): Promise<SignalingMessage>;
106
- abstract chatHistory(count: number): Promise<SignalingMessage>;
107
- abstract customData(data: JSONObject, participantId: ParticipantId | null): Promise<SignalingMessage>;
108
- abstract grantRoles(participantId: ParticipantId, roles: UserRole[], revoke: boolean): Promise<SignalingMessage>;
109
- abstract muteParticipant(participantId: ParticipantId | null, muteStates: MuteStates, requestedMedia: MediaOption[], roomId: number | null): Promise<SignalingMessage>;
110
- abstract enableFeatureForRoles(feature: ConversationFeature, roles: UserRole[]): Promise<SignalingMessage>;
111
- abstract pinParticipant(participantId: ParticipantId, unpin: boolean, roomId: number | null): Promise<SignalingMessage>;
112
- abstract updateMediaModifiers(mediaModifiers: MediaModifiers): Promise<SignalingMessage>;
113
- abstract enableVideoSuspend(enabled: boolean): Promise<SignalingMessage>;
114
- abstract enableVideoSuspendSuggest(enabled: boolean): Promise<SignalingMessage>;
115
- abstract changeSimulcast(changeSimulcast: ChangeSimulcast): Promise<SignalingMessage>;
116
- abstract changeOptions(changes: {
117
- [key in ConversationOption]?: boolean;
118
- }): Promise<SignalingMessage>;
119
- abstract getWaitingHall(fromId: SignalingMessage.WaitingParticipantId | null, count?: number, backward?: boolean): Promise<SignalingMessage>;
120
- abstract promoteParticipant(participantId?: CompositeUserId, demote?: boolean): Promise<SignalingMessage>;
121
- abstract requestPromotion(unrequest: boolean): Promise<SignalingMessage>;
122
- abstract acceptPromotion(reject: boolean): Promise<SignalingMessage>;
123
- abstract feedback(key: string): Promise<SignalingMessage>;
124
- abstract getHandQueue(): Promise<SignalingMessage>;
125
- abstract setProducerNotificationDataChannel(dataChannel: RTCDataChannel): void;
126
- abstract setProducerCommandDataChannel(dataChannel: RTCDataChannel): void;
127
- abstract useCommandDataChannel(status: boolean): void;
128
- abstract resetProducerConnection(cause?: Error): void;
129
- abstract getParticipantListChunk(participantListChunkParameters: ParticipantListChunkParameters): Promise<SignalingMessage>;
130
- abstract getParticipants(externalIds: SignalingMessage.ExternalId[]): Promise<GetParticipantsSignalingResponse>;
131
- abstract getPeerId(): number | null;
132
- abstract startAsr(params: IAsrStartParams): Promise<SignalingMessage>;
133
- abstract stopAsr(params?: IAsrStopParams): Promise<SignalingMessage>;
134
- abstract requestAsr(request: boolean): Promise<SignalingMessage>;
135
- get ready(): boolean;
136
- setParticipantIdRegistry(participantIdRegistry: ParticipantIdRegistry): void;
137
- requestRealloc(): void;
138
- setEndpoint(endpoint: string): void;
139
- setWebTransportEndpoint(endpoint: string | null): void;
140
- readyToSend(isReady?: boolean): void;
141
- requestTestMode(consumerCommand: string, producerCommand: string | null): Promise<SignalingMessage | void>;
142
- getNextCommandSequenceNumber(): number;
143
- }
@@ -1,37 +0,0 @@
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
- }