livekit-client 0.16.2 → 0.16.3
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/dist/api/RequestQueue.d.ts +12 -0
- package/dist/api/RequestQueue.js +61 -0
- package/dist/api/RequestQueue.js.map +1 -0
- package/dist/api/SignalClient.d.ts +4 -1
- package/dist/api/SignalClient.js +14 -1
- package/dist/api/SignalClient.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +0 -10
- package/dist/room/RTCEngine.d.ts +18 -4
- package/dist/room/RTCEngine.js +13 -5
- package/dist/room/RTCEngine.js.map +1 -1
- package/dist/room/Room.d.ts +43 -6
- package/dist/room/Room.js +62 -51
- package/dist/room/Room.js.map +1 -1
- package/dist/room/events.d.ts +8 -1
- package/dist/room/events.js +10 -3
- package/dist/room/events.js.map +1 -1
- package/dist/room/participant/LocalParticipant.js +2 -3
- package/dist/room/participant/LocalParticipant.js.map +1 -1
- package/dist/room/participant/Participant.d.ts +30 -4
- package/dist/room/participant/Participant.js +2 -2
- package/dist/room/participant/Participant.js.map +1 -1
- package/dist/room/participant/RemoteParticipant.d.ts +3 -4
- package/dist/room/participant/RemoteParticipant.js.map +1 -1
- package/dist/room/track/LocalAudioTrack.js +8 -1
- package/dist/room/track/LocalAudioTrack.js.map +1 -1
- package/dist/room/track/LocalVideoTrack.d.ts +1 -5
- package/dist/room/track/LocalVideoTrack.js +12 -117
- package/dist/room/track/LocalVideoTrack.js.map +1 -1
- package/dist/room/track/Track.d.ts +16 -3
- package/dist/room/track/Track.js +3 -1
- package/dist/room/track/Track.js.map +1 -1
- package/dist/room/track/types.d.ts +4 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
- package/src/api/RequestQueue.ts +53 -0
- package/src/api/SignalClient.ts +19 -1
- package/src/index.ts +1 -1
- package/src/options.ts +0 -12
- package/src/room/RTCEngine.ts +38 -7
- package/src/room/Room.ts +135 -59
- package/src/room/events.ts +10 -1
- package/src/room/participant/LocalParticipant.ts +1 -2
- package/src/room/participant/Participant.ts +39 -4
- package/src/room/participant/RemoteParticipant.ts +6 -4
- package/src/room/track/LocalAudioTrack.ts +8 -1
- package/src/room/track/LocalVideoTrack.ts +11 -142
- package/src/room/track/Track.ts +19 -3
- package/src/room/track/types.ts +4 -4
- package/src/version.ts +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocalAudioTrack.js","sourceRoot":"","sources":["../../../src/room/track/LocalAudioTrack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA+B;AAC/B,oCAA8E;AAC9E,8DAAsC;AAEtC,mCAAgC;AAChC,mCAAgD;AAEhD,MAAqB,eAAgB,SAAQ,oBAAU;IAQrD,YACE,UAA4B,EAC5B,WAAmC;QAEnC,KAAK,CAAC,UAAU,EAAE,aAAK,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QATnD,gBAAgB;QAChB,eAAU,GAAY,KAAK,CAAC;QA2DpB,kBAAa,GAAG,GAAS,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;gBACzB,OAAO;aACR;
|
1
|
+
{"version":3,"file":"LocalAudioTrack.js","sourceRoot":"","sources":["../../../src/room/track/LocalAudioTrack.ts"],"names":[],"mappings":"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"}
|
@@ -7,13 +7,10 @@ import { VideoCaptureOptions } from './options';
|
|
7
7
|
export default class LocalVideoTrack extends LocalTrack {
|
8
8
|
signalClient?: SignalClient;
|
9
9
|
private prevStats?;
|
10
|
-
private lastQualityChange?;
|
11
|
-
private lastExplicitQualityChange?;
|
12
10
|
private encodings?;
|
13
|
-
private activeQualities?;
|
14
11
|
constructor(mediaTrack: MediaStreamTrack, constraints?: MediaTrackConstraints);
|
15
12
|
get isSimulcast(): boolean;
|
16
|
-
startMonitor(signalClient: SignalClient
|
13
|
+
startMonitor(signalClient: SignalClient): void;
|
17
14
|
stop(): void;
|
18
15
|
mute(): Promise<LocalVideoTrack>;
|
19
16
|
unmute(): Promise<LocalVideoTrack>;
|
@@ -27,7 +24,6 @@ export default class LocalVideoTrack extends LocalTrack {
|
|
27
24
|
*/
|
28
25
|
setPublishingLayers(qualities: SubscribedQuality[]): Promise<void>;
|
29
26
|
private monitorSender;
|
30
|
-
private checkAndUpdateSimulcast;
|
31
27
|
}
|
32
28
|
export declare function videoQualityForRid(rid: string): VideoQuality;
|
33
29
|
export declare function videoLayersFromEncodings(width: number, height: number, encodings?: RTCRtpEncodingParameters[]): VideoLayer[];
|
@@ -20,24 +20,23 @@ const utils_1 = require("../utils");
|
|
20
20
|
const LocalTrack_1 = __importDefault(require("./LocalTrack"));
|
21
21
|
const Track_1 = require("./Track");
|
22
22
|
const utils_2 = require("./utils");
|
23
|
-
// delay before attempting to upgrade
|
24
|
-
const QUALITY_UPGRADE_DELAY = 60 * 1000;
|
25
|
-
// avoid downgrading too quickly
|
26
|
-
const QUALITY_DOWNGRADE_DELAY = 5 * 1000;
|
27
|
-
const ridOrder = ['q', 'h', 'f'];
|
28
23
|
class LocalVideoTrack extends LocalTrack_1.default {
|
29
24
|
constructor(mediaTrack, constraints) {
|
30
25
|
super(mediaTrack, Track_1.Track.Kind.Video, constraints);
|
31
|
-
this.monitorSender = (
|
26
|
+
this.monitorSender = () => __awaiter(this, void 0, void 0, function* () {
|
32
27
|
if (!this.sender) {
|
33
28
|
this._currentBitrate = 0;
|
34
29
|
return;
|
35
30
|
}
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
31
|
+
let stats;
|
32
|
+
try {
|
33
|
+
stats = yield this.getSenderStats();
|
34
|
+
}
|
35
|
+
catch (e) {
|
36
|
+
logger_1.default.error('could not get audio sender stats', e);
|
37
|
+
return;
|
40
38
|
}
|
39
|
+
const statsMap = new Map(stats.map((s) => [s.rid, s]));
|
41
40
|
if (this.prevStats) {
|
42
41
|
let totalBitrate = 0;
|
43
42
|
statsMap.forEach((s, key) => {
|
@@ -49,7 +48,7 @@ class LocalVideoTrack extends LocalTrack_1.default {
|
|
49
48
|
}
|
50
49
|
this.prevStats = statsMap;
|
51
50
|
setTimeout(() => {
|
52
|
-
this.monitorSender(
|
51
|
+
this.monitorSender();
|
53
52
|
}, stats_1.monitorFrequency);
|
54
53
|
});
|
55
54
|
}
|
@@ -60,7 +59,7 @@ class LocalVideoTrack extends LocalTrack_1.default {
|
|
60
59
|
return false;
|
61
60
|
}
|
62
61
|
/* @internal */
|
63
|
-
startMonitor(signalClient
|
62
|
+
startMonitor(signalClient) {
|
64
63
|
var _a;
|
65
64
|
this.signalClient = signalClient;
|
66
65
|
// save original encodings
|
@@ -69,7 +68,7 @@ class LocalVideoTrack extends LocalTrack_1.default {
|
|
69
68
|
this.encodings = params.encodings;
|
70
69
|
}
|
71
70
|
setTimeout(() => {
|
72
|
-
this.monitorSender(
|
71
|
+
this.monitorSender();
|
73
72
|
}, stats_1.monitorFrequency);
|
74
73
|
}
|
75
74
|
stop() {
|
@@ -199,7 +198,6 @@ class LocalVideoTrack extends LocalTrack_1.default {
|
|
199
198
|
logger_1.default.warn('cannot set publishing layers, encodings mismatch');
|
200
199
|
return;
|
201
200
|
}
|
202
|
-
this.activeQualities = qualities;
|
203
201
|
let hasChanged = false;
|
204
202
|
encodings.forEach((encoding, idx) => {
|
205
203
|
var _a;
|
@@ -240,109 +238,6 @@ class LocalVideoTrack extends LocalTrack_1.default {
|
|
240
238
|
}
|
241
239
|
});
|
242
240
|
}
|
243
|
-
checkAndUpdateSimulcast(statsMap) {
|
244
|
-
var _a, _b;
|
245
|
-
if (!this.sender || this.isMuted || !this.encodings) {
|
246
|
-
return;
|
247
|
-
}
|
248
|
-
let bestEncoding;
|
249
|
-
const { encodings } = this.sender.getParameters();
|
250
|
-
encodings.forEach((encoding) => {
|
251
|
-
// skip inactive encodings
|
252
|
-
if (!encoding.active)
|
253
|
-
return;
|
254
|
-
if (bestEncoding === undefined) {
|
255
|
-
bestEncoding = encoding;
|
256
|
-
}
|
257
|
-
else if (bestEncoding.rid
|
258
|
-
&& encoding.rid
|
259
|
-
&& ridOrder.indexOf(bestEncoding.rid) < ridOrder.indexOf(encoding.rid)) {
|
260
|
-
bestEncoding = encoding;
|
261
|
-
}
|
262
|
-
else if (bestEncoding.maxBitrate !== undefined
|
263
|
-
&& encoding.maxBitrate !== undefined
|
264
|
-
&& bestEncoding.maxBitrate < encoding.maxBitrate) {
|
265
|
-
bestEncoding = encoding;
|
266
|
-
}
|
267
|
-
});
|
268
|
-
if (!bestEncoding) {
|
269
|
-
return;
|
270
|
-
}
|
271
|
-
const rid = (_a = bestEncoding.rid) !== null && _a !== void 0 ? _a : '';
|
272
|
-
const sendStats = statsMap.get(rid);
|
273
|
-
const lastStats = (_b = this.prevStats) === null || _b === void 0 ? void 0 : _b.get(rid);
|
274
|
-
if (!sendStats || !lastStats) {
|
275
|
-
return;
|
276
|
-
}
|
277
|
-
const currentQuality = videoQualityForRid(rid);
|
278
|
-
// adaptive simulcast algorithm notes (davidzhao)
|
279
|
-
// Chrome (and other browsers) will automatically pause the highest layer
|
280
|
-
// when it runs into bandwidth limitations. When that happens, it would not
|
281
|
-
// be able to send any new frames between the two stats checks.
|
282
|
-
//
|
283
|
-
// We need to set that layer to inactive intentionally, because chrome tends
|
284
|
-
// to flicker, meaning it will attempt to send that layer again shortly
|
285
|
-
// afterwards, flip-flopping every few seconds. We want to avoid that.
|
286
|
-
//
|
287
|
-
// Note: even after bandwidth recovers, the flip-flopping behavior continues
|
288
|
-
// this is possibly due to SFU-side PLI generation and imperfect bandwidth estimation
|
289
|
-
if (sendStats.qualityLimitationResolutionChanges
|
290
|
-
- lastStats.qualityLimitationResolutionChanges > 0) {
|
291
|
-
this.lastQualityChange = new Date().getTime();
|
292
|
-
}
|
293
|
-
// log.debug('frameSent', sendStats.framesSent, 'lastSent', lastStats.framesSent,
|
294
|
-
// 'elapsed', sendStats.timestamp - lastStats.timestamp);
|
295
|
-
if (sendStats.framesSent - lastStats.framesSent > 0) {
|
296
|
-
// frames have been sending ok, consider upgrading quality
|
297
|
-
if (currentQuality === livekit_models_1.VideoQuality.HIGH || !this.lastQualityChange)
|
298
|
-
return;
|
299
|
-
const nextQuality = currentQuality + 1;
|
300
|
-
if ((new Date()).getTime() - this.lastQualityChange < QUALITY_UPGRADE_DELAY) {
|
301
|
-
return;
|
302
|
-
}
|
303
|
-
if (this.activeQualities
|
304
|
-
&& this.activeQualities.some((q) => q.quality === nextQuality && !q.enabled)) {
|
305
|
-
// quality has been disabled by the server, so we should skip
|
306
|
-
return;
|
307
|
-
}
|
308
|
-
// we are already at the highest layer
|
309
|
-
let bestQuality = livekit_models_1.VideoQuality.LOW;
|
310
|
-
encodings.forEach((encoding) => {
|
311
|
-
var _a;
|
312
|
-
const quality = videoQualityForRid((_a = encoding.rid) !== null && _a !== void 0 ? _a : '');
|
313
|
-
if (quality > bestQuality) {
|
314
|
-
bestQuality = quality;
|
315
|
-
}
|
316
|
-
});
|
317
|
-
if (nextQuality > bestQuality) {
|
318
|
-
return;
|
319
|
-
}
|
320
|
-
logger_1.default.debug('upgrading video quality to', nextQuality);
|
321
|
-
this.setPublishingQuality(nextQuality);
|
322
|
-
return;
|
323
|
-
}
|
324
|
-
// if best layer has not sent anything, do not downgrade till the
|
325
|
-
// best layer starts sending something. It is possible that the
|
326
|
-
// browser has not started some layer(s) due to cpu/bandwidth
|
327
|
-
// constraints
|
328
|
-
if (sendStats.framesSent === 0)
|
329
|
-
return;
|
330
|
-
// if we've upgraded or downgraded recently, give it a bit of time before
|
331
|
-
// downgrading again
|
332
|
-
if (this.lastExplicitQualityChange
|
333
|
-
&& ((new Date()).getTime() - this.lastExplicitQualityChange) < QUALITY_DOWNGRADE_DELAY) {
|
334
|
-
return;
|
335
|
-
}
|
336
|
-
if (currentQuality === livekit_models_1.VideoQuality.UNRECOGNIZED) {
|
337
|
-
return;
|
338
|
-
}
|
339
|
-
if (currentQuality === livekit_models_1.VideoQuality.LOW) {
|
340
|
-
// already the lowest quality, nothing we can do
|
341
|
-
return;
|
342
|
-
}
|
343
|
-
logger_1.default.debug('downgrading video quality to', currentQuality - 1);
|
344
|
-
this.setPublishingQuality(currentQuality - 1);
|
345
|
-
}
|
346
241
|
}
|
347
242
|
exports.default = LocalVideoTrack;
|
348
243
|
function videoQualityForRid(rid) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocalVideoTrack.js","sourceRoot":"","sources":["../../../src/room/track/LocalVideoTrack.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"LocalVideoTrack.js","sourceRoot":"","sources":["../../../src/room/track/LocalVideoTrack.ts"],"names":[],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
2
|
-
import { EventEmitter } from 'events';
|
1
|
+
import type TypedEventEmitter from 'typed-emitter';
|
3
2
|
import { TrackSource, TrackType } from '../../proto/livekit_models';
|
4
3
|
import { StreamState as ProtoStreamState } from '../../proto/livekit_rtc';
|
5
|
-
|
4
|
+
declare const Track_base: new () => TypedEventEmitter<TrackEventCallbacks>;
|
5
|
+
export declare class Track extends Track_base {
|
6
6
|
kind: Track.Kind;
|
7
7
|
mediaStreamTrack: MediaStreamTrack;
|
8
8
|
attachedElements: HTMLMediaElement[];
|
@@ -77,3 +77,16 @@ export declare namespace Track {
|
|
77
77
|
/** @internal */
|
78
78
|
function streamStateFromProto(s: ProtoStreamState): StreamState;
|
79
79
|
}
|
80
|
+
export declare type TrackEventCallbacks = {
|
81
|
+
message: () => void;
|
82
|
+
muted: (track?: any) => void;
|
83
|
+
unmuted: (track?: any) => void;
|
84
|
+
ended: (track?: any) => void;
|
85
|
+
updateSettings: () => void;
|
86
|
+
updateSubscription: () => void;
|
87
|
+
audioPlaybackStarted: () => void;
|
88
|
+
audioPlaybackFailed: (error: Error) => void;
|
89
|
+
visibilityChanged: (visible: boolean, track?: any) => void;
|
90
|
+
videoDimensionsChanged: (dimensions: Track.Dimensions, track?: any) => void;
|
91
|
+
};
|
92
|
+
export {};
|
package/dist/room/track/Track.js
CHANGED
@@ -137,7 +137,9 @@ function attachToElement(track, element) {
|
|
137
137
|
// avoid flicker
|
138
138
|
if (element.srcObject !== mediaStream) {
|
139
139
|
element.srcObject = mediaStream;
|
140
|
-
if (utils_1.isSafari() && element instanceof HTMLVideoElement) {
|
140
|
+
if ((utils_1.isSafari() || utils_1.isFireFox()) && element instanceof HTMLVideoElement) {
|
141
|
+
// Firefox also has a timing issue where video doesn't actually get attached unless
|
142
|
+
// performed out-of-band
|
141
143
|
// Safari 15 has a bug where in certain layouts, video element renders
|
142
144
|
// black until the page is resized or other changes take place.
|
143
145
|
// Resetting the src triggers it to render.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../../../src/room/track/Track.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;
|
1
|
+
{"version":3,"file":"Track.js","sourceRoot":"","sources":["../../../src/room/track/Track.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import LocalAudioTrack from './LocalAudioTrack';
|
2
|
-
import LocalVideoTrack from './LocalVideoTrack';
|
3
|
-
import RemoteAudioTrack from './RemoteAudioTrack';
|
4
|
-
import RemoteVideoTrack from './RemoteVideoTrack';
|
1
|
+
import type LocalAudioTrack from './LocalAudioTrack';
|
2
|
+
import type LocalVideoTrack from './LocalVideoTrack';
|
3
|
+
import type RemoteAudioTrack from './RemoteAudioTrack';
|
4
|
+
import type RemoteVideoTrack from './RemoteVideoTrack';
|
5
5
|
export declare type RemoteTrack = RemoteAudioTrack | RemoteVideoTrack;
|
6
6
|
export declare type AudioTrack = RemoteAudioTrack | LocalAudioTrack;
|
7
7
|
export declare type VideoTrack = RemoteVideoTrack | LocalVideoTrack;
|
package/dist/version.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "0.16.
|
1
|
+
export declare const version = "0.16.3";
|
2
2
|
export declare const protocolVersion = 6;
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "livekit-client",
|
3
|
-
"version": "0.16.
|
3
|
+
"version": "0.16.3",
|
4
4
|
"description": "JavaScript/TypeScript client SDK for LiveKit",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"source": "src/index.ts",
|
@@ -38,6 +38,7 @@
|
|
38
38
|
"ts-jest": "^27.0.7",
|
39
39
|
"ts-loader": "^8.1.0",
|
40
40
|
"ts-proto": "^1.85.0",
|
41
|
+
"typed-emitter": "^2.1.0",
|
41
42
|
"typedoc": "^0.20.35",
|
42
43
|
"typedoc-plugin-no-inherit": "1.3.0",
|
43
44
|
"typescript": "~4.2.3",
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import logger from '../logger';
|
2
|
+
|
3
|
+
export default class Queue {
|
4
|
+
private queue: Array<() => void>;
|
5
|
+
|
6
|
+
private running: boolean;
|
7
|
+
|
8
|
+
constructor() {
|
9
|
+
this.queue = [];
|
10
|
+
this.running = false;
|
11
|
+
}
|
12
|
+
|
13
|
+
enqueue(cb: () => void) {
|
14
|
+
logger.debug('enqueuing request to fire later');
|
15
|
+
this.queue.push(cb);
|
16
|
+
}
|
17
|
+
|
18
|
+
dequeue() {
|
19
|
+
const evt = this.queue.shift();
|
20
|
+
if (evt) evt();
|
21
|
+
logger.debug('firing request from queue');
|
22
|
+
}
|
23
|
+
|
24
|
+
async run() {
|
25
|
+
if (this.running) return;
|
26
|
+
logger.debug('start queue');
|
27
|
+
this.running = true;
|
28
|
+
while (this.running && this.queue.length > 0) {
|
29
|
+
this.dequeue();
|
30
|
+
}
|
31
|
+
this.running = false;
|
32
|
+
logger.debug('queue finished');
|
33
|
+
}
|
34
|
+
|
35
|
+
pause() {
|
36
|
+
logger.debug('pausing queue');
|
37
|
+
this.running = false;
|
38
|
+
}
|
39
|
+
|
40
|
+
reset() {
|
41
|
+
logger.debug('resetting queue');
|
42
|
+
this.running = false;
|
43
|
+
this.queue = [];
|
44
|
+
}
|
45
|
+
|
46
|
+
isRunning() {
|
47
|
+
return this.running;
|
48
|
+
}
|
49
|
+
|
50
|
+
isEmpty() {
|
51
|
+
return this.queue.length === 0;
|
52
|
+
}
|
53
|
+
}
|
package/src/api/SignalClient.ts
CHANGED
@@ -21,6 +21,7 @@ import {
|
|
21
21
|
} from '../proto/livekit_rtc';
|
22
22
|
import { ConnectionError } from '../room/errors';
|
23
23
|
import { getClientInfo, sleep } from '../room/utils';
|
24
|
+
import Queue from './RequestQueue';
|
24
25
|
|
25
26
|
// internal options
|
26
27
|
interface ConnectOpts {
|
@@ -38,6 +39,10 @@ export interface SignalOptions {
|
|
38
39
|
export class SignalClient {
|
39
40
|
isConnected: boolean;
|
40
41
|
|
42
|
+
isReconnecting: boolean;
|
43
|
+
|
44
|
+
requestQueue: Queue;
|
45
|
+
|
41
46
|
useJSON: boolean;
|
42
47
|
|
43
48
|
/** simulate signaling latency by delaying messages */
|
@@ -80,7 +85,9 @@ export class SignalClient {
|
|
80
85
|
|
81
86
|
constructor(useJSON: boolean = false) {
|
82
87
|
this.isConnected = false;
|
88
|
+
this.isReconnecting = false;
|
83
89
|
this.useJSON = useJSON;
|
90
|
+
this.requestQueue = new Queue();
|
84
91
|
}
|
85
92
|
|
86
93
|
async join(
|
@@ -98,9 +105,12 @@ export class SignalClient {
|
|
98
105
|
}
|
99
106
|
|
100
107
|
async reconnect(url: string, token: string): Promise<void> {
|
108
|
+
this.isReconnecting = true;
|
101
109
|
await this.connect(url, token, {
|
102
110
|
reconnect: true,
|
103
111
|
});
|
112
|
+
this.isReconnecting = false;
|
113
|
+
this.requestQueue.run();
|
104
114
|
}
|
105
115
|
|
106
116
|
connect(
|
@@ -286,7 +296,15 @@ export class SignalClient {
|
|
286
296
|
this.sendRequest(SignalRequest.fromPartial({ leave: {} }));
|
287
297
|
}
|
288
298
|
|
289
|
-
async sendRequest(req: SignalRequest) {
|
299
|
+
async sendRequest(req: SignalRequest, fromQueue: boolean = false) {
|
300
|
+
// capture all requests while reconnecting and put them in a queue.
|
301
|
+
// keep order by queueing up new events as long as the queue is not empty
|
302
|
+
// unless the request originates from the queue, then don't enqueue again
|
303
|
+
|
304
|
+
if ((this.isReconnecting && !req.simulate) || (!this.requestQueue.isEmpty() && !fromQueue)) {
|
305
|
+
this.requestQueue.enqueue(() => this.sendRequest(req, true));
|
306
|
+
return;
|
307
|
+
}
|
290
308
|
if (this.signalLatency) {
|
291
309
|
await sleep(this.signalLatency);
|
292
310
|
}
|
package/src/index.ts
CHANGED
@@ -29,7 +29,6 @@ export {
|
|
29
29
|
Room,
|
30
30
|
RoomState,
|
31
31
|
DataPacket_Kind,
|
32
|
-
ConnectionQuality,
|
33
32
|
Participant,
|
34
33
|
RemoteParticipant,
|
35
34
|
LocalParticipant,
|
@@ -44,4 +43,5 @@ export {
|
|
44
43
|
ParticipantTrackPermission,
|
45
44
|
TrackPublication,
|
46
45
|
VideoQuality,
|
46
|
+
ConnectionQuality,
|
47
47
|
};
|
package/src/options.ts
CHANGED
@@ -46,12 +46,6 @@ export interface RoomOptions {
|
|
46
46
|
*/
|
47
47
|
stopLocalTrackOnUnpublish?: boolean;
|
48
48
|
|
49
|
-
/**
|
50
|
-
* @internal
|
51
|
-
* experimental flag, disable client managed layer pause when publishing capability is limited
|
52
|
-
*/
|
53
|
-
expDisableLayerPause?: boolean;
|
54
|
-
|
55
49
|
/**
|
56
50
|
* @internal
|
57
51
|
* experimental flag, introduce a delay before sending signaling messages
|
@@ -143,10 +137,4 @@ export interface ConnectOptions extends CreateLocalTracksOptions {
|
|
143
137
|
* set this to false if you would prefer to clean up unpublished local tracks manually.
|
144
138
|
*/
|
145
139
|
stopLocalTrackOnUnpublish?: boolean;
|
146
|
-
|
147
|
-
/**
|
148
|
-
* @internal
|
149
|
-
* experimental flag, disable client managed layer pause when publishing capability is limited
|
150
|
-
*/
|
151
|
-
expDisableLayerPause?: boolean;
|
152
140
|
}
|
package/src/room/RTCEngine.ts
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
import { EventEmitter } from 'events';
|
2
|
+
import type TypedEventEmitter from 'typed-emitter';
|
2
3
|
import { SignalClient, SignalOptions } from '../api/SignalClient';
|
3
4
|
import log from '../logger';
|
4
|
-
import {
|
5
|
+
import {
|
6
|
+
DataPacket, DataPacket_Kind, SpeakerInfo, TrackInfo, UserPacket,
|
7
|
+
} from '../proto/livekit_models';
|
5
8
|
import {
|
6
9
|
AddTrackRequest, JoinResponse,
|
7
10
|
LeaveRequest,
|
@@ -11,7 +14,7 @@ import {
|
|
11
14
|
import { ConnectionError, TrackInvalidError, UnexpectedConnectionState } from './errors';
|
12
15
|
import { EngineEvent } from './events';
|
13
16
|
import PCTransport from './PCTransport';
|
14
|
-
import { sleep } from './utils';
|
17
|
+
import { isFireFox, sleep } from './utils';
|
15
18
|
|
16
19
|
const lossyDataChannel = '_lossy';
|
17
20
|
const reliableDataChannel = '_reliable';
|
@@ -21,7 +24,9 @@ const maxReconnectDuration = 60 * 1000;
|
|
21
24
|
export const maxICEConnectTimeout = 15 * 1000;
|
22
25
|
|
23
26
|
/** @internal */
|
24
|
-
export default class RTCEngine extends
|
27
|
+
export default class RTCEngine extends (
|
28
|
+
EventEmitter as new () => TypedEventEmitter<EngineEventCallbacks>
|
29
|
+
) {
|
25
30
|
publisher?: PCTransport;
|
26
31
|
|
27
32
|
subscriber?: PCTransport;
|
@@ -164,6 +169,8 @@ export default class RTCEngine extends EventEmitter {
|
|
164
169
|
this.publisher = new PCTransport(this.rtcConfig);
|
165
170
|
this.subscriber = new PCTransport(this.rtcConfig);
|
166
171
|
|
172
|
+
this.emit(EngineEvent.TransportsCreated, this.publisher, this.subscriber);
|
173
|
+
|
167
174
|
this.publisher.pc.onicecandidate = (ev) => {
|
168
175
|
if (!ev.candidate) return;
|
169
176
|
log.trace('adding ICE candidate for peer', ev.candidate);
|
@@ -186,16 +193,18 @@ export default class RTCEngine extends EventEmitter {
|
|
186
193
|
this.subscriber.pc.ondatachannel = this.handleDataChannel;
|
187
194
|
}
|
188
195
|
this.primaryPC = primaryPC;
|
189
|
-
primaryPC.onconnectionstatechange = () => {
|
196
|
+
primaryPC.onconnectionstatechange = async () => {
|
190
197
|
if (primaryPC.connectionState === 'connected') {
|
191
198
|
log.trace('pc connected');
|
199
|
+
try {
|
200
|
+
this.connectedServerAddr = await getConnectedAddress(primaryPC);
|
201
|
+
} catch (e) {
|
202
|
+
log.warn('could not get connected server address', e);
|
203
|
+
}
|
192
204
|
if (!this.pcConnected) {
|
193
205
|
this.pcConnected = true;
|
194
206
|
this.emit(EngineEvent.Connected);
|
195
207
|
}
|
196
|
-
getConnectedAddress(primaryPC).then((v) => {
|
197
|
-
this.connectedServerAddr = v;
|
198
|
-
});
|
199
208
|
} else if (primaryPC.connectionState === 'failed') {
|
200
209
|
// on Safari, PeerConnection will switch to 'disconnected' during renegotiation
|
201
210
|
log.trace('pc disconnected');
|
@@ -367,6 +376,10 @@ export default class RTCEngine extends EventEmitter {
|
|
367
376
|
if (this.isClosed) {
|
368
377
|
return;
|
369
378
|
}
|
379
|
+
if (isFireFox()) {
|
380
|
+
// FF does not support DTLS restart.
|
381
|
+
this.fullReconnect = true;
|
382
|
+
}
|
370
383
|
|
371
384
|
try {
|
372
385
|
if (this.fullReconnect) {
|
@@ -596,3 +609,21 @@ async function getConnectedAddress(pc: RTCPeerConnection): Promise<string | unde
|
|
596
609
|
|
597
610
|
class SignalReconnectError extends Error {
|
598
611
|
}
|
612
|
+
|
613
|
+
export type EngineEventCallbacks = {
|
614
|
+
connected: () => void,
|
615
|
+
disconnected: () => void,
|
616
|
+
resuming: () => void,
|
617
|
+
resumed: () => void,
|
618
|
+
restarting: () => void,
|
619
|
+
restarted: (joinResp: JoinResponse) => void,
|
620
|
+
signalResumed: () => void,
|
621
|
+
mediaTrackAdded: (
|
622
|
+
track: MediaStreamTrack,
|
623
|
+
streams: MediaStream,
|
624
|
+
receiver: RTCRtpReceiver
|
625
|
+
) => void,
|
626
|
+
activeSpeakersUpdate: (speakers: Array<SpeakerInfo>) => void,
|
627
|
+
dataPacketReceived: (userPacket: UserPacket, kind: DataPacket_Kind) => void,
|
628
|
+
transportsCreated: (publisher: PCTransport, subscriber: PCTransport) => void,
|
629
|
+
};
|