@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.
- package/CallsSDK.d.ts +1 -1
- package/abstract/BaseSignaling.d.ts +143 -0
- package/calls-sdk.cjs.js +6 -6
- package/calls-sdk.esm.js +1227 -1145
- package/classes/MediaSource.d.ts +5 -0
- package/classes/conversation/Conversation.d.ts +3 -3
- package/classes/screenshare/ScreenCaptureSender.d.ts +2 -2
- package/classes/transport/BaseTransport.d.ts +3 -3
- package/classes/transport/DirectStatReporter.d.ts +2 -2
- package/classes/transport/DirectTransport.d.ts +2 -2
- package/classes/transport/PerfStatReporter.d.ts +2 -2
- package/classes/transport/ServerTransport.d.ts +2 -2
- package/classes/transport/SimulcastSender.d.ts +2 -2
- package/classes/transport/Transport.d.ts +5 -4
- package/classes/transport/VadGate.d.ts +37 -0
- package/default/Signaling.d.ts +16 -9
- package/default/SignalingTransport.d.ts +80 -0
- package/package.json +3 -3
- package/static/Params.d.ts +9 -30
- package/types/SignalingMessage.d.ts +0 -2
- package/classes/SignalingErrors.d.ts +0 -6
- package/default/SignalingSession.d.ts +0 -92
- package/types/AddParticipantParams.d.ts +0 -18
package/classes/MediaSource.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
54
|
-
|
|
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
|
+
}
|
package/default/Signaling.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
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
|
|
33
|
-
private
|
|
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
|
|
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
|
|
180
|
-
private
|
|
186
|
+
private _onTransportFailed;
|
|
187
|
+
private _onTransportReconnectScheduled;
|
|
181
188
|
/** Попыток восстановить соединение больше не будет: отправляем, сколько длилась череда падений */
|
|
182
189
|
private _logReconnectTimeout;
|
|
183
|
-
private
|
|
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.
|
|
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.
|
|
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
|
|
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",
|
package/static/Params.d.ts
CHANGED
|
@@ -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
|
-
|
|
125
|
-
|
|
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,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
|
-
}
|