livekit-client 0.15.0 → 0.15.4
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/.gitmodules +3 -0
- package/README.md +21 -4
- package/dist/api/SignalClient.d.ts +11 -2
- package/dist/api/SignalClient.js +92 -25
- package/dist/api/SignalClient.js.map +1 -1
- package/dist/connect.js +3 -0
- package/dist/connect.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/logger.js +1 -0
- package/dist/logger.js.map +1 -1
- package/dist/options.d.ts +28 -14
- package/dist/proto/livekit_models.d.ts +48 -0
- package/dist/proto/livekit_models.js +367 -5
- package/dist/proto/livekit_models.js.map +1 -1
- package/dist/proto/livekit_rtc.d.ts +100 -1
- package/dist/proto/livekit_rtc.js +745 -3
- package/dist/proto/livekit_rtc.js.map +1 -1
- package/dist/room/PCTransport.js +4 -0
- package/dist/room/PCTransport.js.map +1 -1
- package/dist/room/RTCEngine.d.ts +4 -0
- package/dist/room/RTCEngine.js +73 -34
- package/dist/room/RTCEngine.js.map +1 -1
- package/dist/room/Room.d.ts +15 -0
- package/dist/room/Room.js +172 -59
- package/dist/room/Room.js.map +1 -1
- package/dist/room/events.d.ts +60 -24
- package/dist/room/events.js +58 -22
- package/dist/room/events.js.map +1 -1
- package/dist/room/participant/LocalParticipant.d.ts +26 -2
- package/dist/room/participant/LocalParticipant.js +69 -21
- package/dist/room/participant/LocalParticipant.js.map +1 -1
- package/dist/room/participant/Participant.d.ts +3 -1
- package/dist/room/participant/Participant.js +1 -0
- package/dist/room/participant/Participant.js.map +1 -1
- package/dist/room/participant/ParticipantTrackPermission.d.ts +19 -0
- package/dist/room/participant/ParticipantTrackPermission.js +16 -0
- package/dist/room/participant/ParticipantTrackPermission.js.map +1 -0
- package/dist/room/participant/RemoteParticipant.d.ts +2 -2
- package/dist/room/participant/RemoteParticipant.js +9 -15
- package/dist/room/participant/RemoteParticipant.js.map +1 -1
- package/dist/room/participant/publishUtils.d.ts +1 -1
- package/dist/room/participant/publishUtils.js +4 -4
- package/dist/room/participant/publishUtils.js.map +1 -1
- package/dist/room/participant/publishUtils.test.js +10 -1
- package/dist/room/participant/publishUtils.test.js.map +1 -1
- package/dist/room/stats.d.ts +21 -6
- package/dist/room/stats.js +22 -1
- package/dist/room/stats.js.map +1 -1
- package/dist/room/track/LocalAudioTrack.d.ts +5 -1
- package/dist/room/track/LocalAudioTrack.js +45 -1
- package/dist/room/track/LocalAudioTrack.js.map +1 -1
- package/dist/room/track/LocalTrack.js +1 -1
- package/dist/room/track/LocalTrack.js.map +1 -1
- package/dist/room/track/LocalTrackPublication.d.ts +3 -1
- package/dist/room/track/LocalTrackPublication.js +15 -5
- package/dist/room/track/LocalTrackPublication.js.map +1 -1
- package/dist/room/track/LocalVideoTrack.d.ts +8 -1
- package/dist/room/track/LocalVideoTrack.js +117 -52
- package/dist/room/track/LocalVideoTrack.js.map +1 -1
- package/dist/room/track/RemoteAudioTrack.d.ts +6 -8
- package/dist/room/track/RemoteAudioTrack.js +55 -19
- package/dist/room/track/RemoteAudioTrack.js.map +1 -1
- package/dist/room/track/RemoteTrack.d.ts +14 -0
- package/dist/room/track/RemoteTrack.js +47 -0
- package/dist/room/track/RemoteTrack.js.map +1 -0
- package/dist/room/track/RemoteTrackPublication.d.ts +10 -2
- package/dist/room/track/RemoteTrackPublication.js +49 -16
- package/dist/room/track/RemoteTrackPublication.js.map +1 -1
- package/dist/room/track/RemoteVideoTrack.d.ts +7 -7
- package/dist/room/track/RemoteVideoTrack.js +66 -22
- package/dist/room/track/RemoteVideoTrack.js.map +1 -1
- package/dist/room/track/Track.d.ts +12 -0
- package/dist/room/track/Track.js +33 -0
- package/dist/room/track/Track.js.map +1 -1
- package/dist/room/track/TrackPublication.d.ts +14 -1
- package/dist/room/track/TrackPublication.js +24 -7
- package/dist/room/track/TrackPublication.js.map +1 -1
- package/dist/room/track/create.d.ts +23 -0
- package/dist/room/track/create.js +130 -0
- package/dist/room/track/create.js.map +1 -0
- package/dist/room/track/defaults.d.ts +4 -0
- package/dist/room/track/defaults.js +21 -0
- package/dist/room/track/defaults.js.map +1 -0
- package/dist/room/utils.d.ts +3 -1
- package/dist/room/utils.js +36 -6
- package/dist/room/utils.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -3
- package/src/api/SignalClient.ts +434 -0
- package/src/connect.ts +100 -0
- package/src/index.ts +47 -0
- package/src/logger.ts +22 -0
- package/src/options.ts +152 -0
- package/src/proto/livekit_models.ts +1863 -0
- package/src/proto/livekit_rtc.ts +3401 -0
- package/src/room/DeviceManager.ts +57 -0
- package/src/room/PCTransport.ts +86 -0
- package/src/room/RTCEngine.ts +484 -0
- package/src/room/Room.ts +785 -0
- package/src/room/errors.ts +65 -0
- package/src/room/events.ts +396 -0
- package/src/room/participant/LocalParticipant.ts +685 -0
- package/src/room/participant/Participant.ts +214 -0
- package/src/room/participant/ParticipantTrackPermission.ts +32 -0
- package/src/room/participant/RemoteParticipant.ts +238 -0
- package/src/room/participant/publishUtils.test.ts +105 -0
- package/src/room/participant/publishUtils.ts +180 -0
- package/src/room/stats.ts +130 -0
- package/src/room/track/LocalAudioTrack.ts +112 -0
- package/src/room/track/LocalTrack.ts +124 -0
- package/src/room/track/LocalTrackPublication.ts +63 -0
- package/src/room/track/LocalVideoTrack.test.ts +70 -0
- package/src/room/track/LocalVideoTrack.ts +416 -0
- package/src/room/track/RemoteAudioTrack.ts +58 -0
- package/src/room/track/RemoteTrack.ts +59 -0
- package/src/room/track/RemoteTrackPublication.ts +192 -0
- package/src/room/track/RemoteVideoTrack.ts +213 -0
- package/src/room/track/Track.ts +301 -0
- package/src/room/track/TrackPublication.ts +120 -0
- package/src/room/track/create.ts +120 -0
- package/src/room/track/defaults.ts +23 -0
- package/src/room/track/options.ts +229 -0
- package/src/room/track/types.ts +8 -0
- package/src/room/track/utils.test.ts +93 -0
- package/src/room/track/utils.ts +76 -0
- package/src/room/utils.ts +74 -0
- package/src/version.ts +2 -0
- package/.github/workflows/publish.yaml +0 -55
- package/.github/workflows/test.yaml +0 -36
- package/example/index.html +0 -237
- package/example/sample.ts +0 -575
- package/example/styles.css +0 -144
- package/example/webpack.config.js +0 -33
package/dist/room/RTCEngine.js
CHANGED
@@ -86,8 +86,8 @@ class RTCEngine extends events_1.EventEmitter {
|
|
86
86
|
logger_1.default.debug(`${connection} disconnected`);
|
87
87
|
if (this.reconnectAttempts >= maxReconnectRetries) {
|
88
88
|
logger_1.default.info('could not connect to signal after', maxReconnectRetries, 'attempts. giving up');
|
89
|
-
this.close();
|
90
89
|
this.emit(events_2.EngineEvent.Disconnected);
|
90
|
+
this.close();
|
91
91
|
return;
|
92
92
|
}
|
93
93
|
const delay = (this.reconnectAttempts * this.reconnectAttempts) * 300;
|
@@ -106,6 +106,7 @@ class RTCEngine extends events_1.EventEmitter {
|
|
106
106
|
this.url = url;
|
107
107
|
this.token = token;
|
108
108
|
const joinResponse = yield this.client.join(url, token, opts);
|
109
|
+
this.emit(events_2.EngineEvent.SignalConnected);
|
109
110
|
this.isClosed = false;
|
110
111
|
this.subscriberPrimary = joinResponse.subscriberPrimary;
|
111
112
|
if (!this.publisher) {
|
@@ -113,7 +114,7 @@ class RTCEngine extends events_1.EventEmitter {
|
|
113
114
|
}
|
114
115
|
// create offer
|
115
116
|
if (!this.subscriberPrimary) {
|
116
|
-
|
117
|
+
this.negotiate();
|
117
118
|
}
|
118
119
|
return joinResponse;
|
119
120
|
});
|
@@ -152,6 +153,13 @@ class RTCEngine extends events_1.EventEmitter {
|
|
152
153
|
updateMuteStatus(trackSid, muted) {
|
153
154
|
this.client.sendMuteTrack(trackSid, muted);
|
154
155
|
}
|
156
|
+
get dataSubscriberReadyState() {
|
157
|
+
var _a;
|
158
|
+
return (_a = this.reliableDCSub) === null || _a === void 0 ? void 0 : _a.readyState;
|
159
|
+
}
|
160
|
+
get connectedServerAddress() {
|
161
|
+
return this.connectedServerAddr;
|
162
|
+
}
|
155
163
|
configure(joinResponse) {
|
156
164
|
// already configured
|
157
165
|
if (this.publisher || this.subscriber) {
|
@@ -202,8 +210,12 @@ class RTCEngine extends events_1.EventEmitter {
|
|
202
210
|
this.iceConnected = true;
|
203
211
|
this.emit(events_2.EngineEvent.Connected);
|
204
212
|
}
|
213
|
+
getConnectedAddress(primaryPC).then((v) => {
|
214
|
+
this.connectedServerAddr = v;
|
215
|
+
});
|
205
216
|
}
|
206
217
|
else if (primaryPC.iceConnectionState === 'failed') {
|
218
|
+
// on Safari, PeerConnection will switch to 'disconnected' during renegotiation
|
207
219
|
logger_1.default.trace('ICE disconnected');
|
208
220
|
if (this.iceConnected) {
|
209
221
|
this.iceConnected = false;
|
@@ -259,10 +271,8 @@ class RTCEngine extends events_1.EventEmitter {
|
|
259
271
|
yield this.subscriber.pc.setLocalDescription(answer);
|
260
272
|
this.client.sendAnswer(answer);
|
261
273
|
});
|
262
|
-
this.client.onParticipantUpdate = (updates) => {
|
263
|
-
this.emit(events_2.EngineEvent.ParticipantUpdate, updates);
|
264
|
-
};
|
265
274
|
this.client.onLocalTrackPublished = (res) => {
|
275
|
+
logger_1.default.debug('received trackPublishedResponse', res);
|
266
276
|
const resolve = this.pendingTrackResolvers[res.cid];
|
267
277
|
if (!resolve) {
|
268
278
|
logger_1.default.error('missing track resolver for ', res.cid);
|
@@ -271,24 +281,12 @@ class RTCEngine extends events_1.EventEmitter {
|
|
271
281
|
delete this.pendingTrackResolvers[res.cid];
|
272
282
|
resolve(res.track);
|
273
283
|
};
|
274
|
-
this.client.onSpeakersChanged = (speakers) => {
|
275
|
-
this.emit(events_2.EngineEvent.SpeakersChanged, speakers);
|
276
|
-
};
|
277
284
|
this.client.onClose = () => {
|
278
285
|
this.handleDisconnect('signal');
|
279
286
|
};
|
280
287
|
this.client.onLeave = () => {
|
281
|
-
this.close();
|
282
288
|
this.emit(events_2.EngineEvent.Disconnected);
|
283
|
-
|
284
|
-
this.client.onRemoteMuteChanged = (trackSid, muted) => {
|
285
|
-
this.emit(events_2.EngineEvent.RemoteMuteChanged, trackSid, muted);
|
286
|
-
};
|
287
|
-
this.client.onRoomUpdate = (room) => {
|
288
|
-
this.emit(events_2.EngineEvent.RoomUpdate, room);
|
289
|
-
};
|
290
|
-
this.client.onConnectionQuality = (update) => {
|
291
|
-
this.emit(events_2.EngineEvent.ConnectionQualityUpdate, update);
|
289
|
+
this.close();
|
292
290
|
};
|
293
291
|
}
|
294
292
|
reconnect() {
|
@@ -305,6 +303,7 @@ class RTCEngine extends events_1.EventEmitter {
|
|
305
303
|
}
|
306
304
|
this.reconnectAttempts += 1;
|
307
305
|
yield this.client.reconnect(this.url, this.token);
|
306
|
+
this.emit(events_2.EngineEvent.SignalConnected);
|
308
307
|
// trigger publisher reconnect
|
309
308
|
if (!this.publisher || !this.subscriber) {
|
310
309
|
throw new errors_1.UnexpectedConnectionState('publisher and subscriber connections unset');
|
@@ -342,34 +341,31 @@ class RTCEngine extends events_1.EventEmitter {
|
|
342
341
|
});
|
343
342
|
}
|
344
343
|
ensurePublisherConnected(kind) {
|
345
|
-
var _a;
|
344
|
+
var _a, _b;
|
346
345
|
return __awaiter(this, void 0, void 0, function* () {
|
347
346
|
if (!this.subscriberPrimary) {
|
348
347
|
return;
|
349
348
|
}
|
350
|
-
if (this.publisher
|
349
|
+
if (!this.publisher) {
|
350
|
+
throw new errors_1.ConnectionError('publisher connection not set');
|
351
|
+
}
|
352
|
+
if (!this.publisher.isICEConnected && this.publisher.pc.iceConnectionState !== 'checking') {
|
353
|
+
// start negotiation
|
354
|
+
this.negotiate();
|
355
|
+
}
|
356
|
+
const targetChannel = this.dataChannelForKind(kind);
|
357
|
+
if ((targetChannel === null || targetChannel === void 0 ? void 0 : targetChannel.readyState) === 'open') {
|
351
358
|
return;
|
352
359
|
}
|
353
|
-
// start negotiation
|
354
|
-
this.negotiate();
|
355
360
|
// wait until publisher ICE connected
|
356
361
|
const endTime = (new Date()).getTime() + exports.maxICEConnectTimeout;
|
357
362
|
while ((new Date()).getTime() < endTime) {
|
358
|
-
if (this.publisher && this.
|
359
|
-
|
360
|
-
if (kind === livekit_models_1.DataPacket_Kind.LOSSY && this.lossyDC) {
|
361
|
-
status = this.lossyDC.readyState;
|
362
|
-
}
|
363
|
-
else if (kind === livekit_models_1.DataPacket_Kind.RELIABLE && this.reliableDC) {
|
364
|
-
status = this.reliableDC.readyState;
|
365
|
-
}
|
366
|
-
if (status === 'open') {
|
367
|
-
return;
|
368
|
-
}
|
363
|
+
if (this.publisher.isICEConnected && ((_a = this.dataChannelForKind(kind)) === null || _a === void 0 ? void 0 : _a.readyState) === 'open') {
|
364
|
+
return;
|
369
365
|
}
|
370
366
|
yield utils_1.sleep(50);
|
371
367
|
}
|
372
|
-
throw new errors_1.ConnectionError(`could not establish publisher connection, state ${(
|
368
|
+
throw new errors_1.ConnectionError(`could not establish publisher connection, state ${(_b = this.publisher) === null || _b === void 0 ? void 0 : _b.pc.iceConnectionState}`);
|
373
369
|
});
|
374
370
|
}
|
375
371
|
/** @internal */
|
@@ -380,6 +376,49 @@ class RTCEngine extends events_1.EventEmitter {
|
|
380
376
|
this.hasPublished = true;
|
381
377
|
this.publisher.negotiate();
|
382
378
|
}
|
379
|
+
dataChannelForKind(kind) {
|
380
|
+
if (kind === livekit_models_1.DataPacket_Kind.LOSSY) {
|
381
|
+
return this.lossyDC;
|
382
|
+
}
|
383
|
+
if (kind === livekit_models_1.DataPacket_Kind.RELIABLE) {
|
384
|
+
return this.reliableDC;
|
385
|
+
}
|
386
|
+
}
|
383
387
|
}
|
384
388
|
exports.default = RTCEngine;
|
389
|
+
function getConnectedAddress(pc) {
|
390
|
+
var _a;
|
391
|
+
return __awaiter(this, void 0, void 0, function* () {
|
392
|
+
let selectedCandidatePairId = '';
|
393
|
+
const candidatePairs = new Map();
|
394
|
+
// id -> candidate ip
|
395
|
+
const candidates = new Map();
|
396
|
+
const stats = yield pc.getStats();
|
397
|
+
stats.forEach((v) => {
|
398
|
+
switch (v.type) {
|
399
|
+
case 'transport':
|
400
|
+
selectedCandidatePairId = v.selectedCandidatePairId;
|
401
|
+
break;
|
402
|
+
case 'candidate-pair':
|
403
|
+
if (selectedCandidatePairId === '' && v.selected) {
|
404
|
+
selectedCandidatePairId = v.id;
|
405
|
+
}
|
406
|
+
candidatePairs.set(v.id, v);
|
407
|
+
break;
|
408
|
+
case 'remote-candidate':
|
409
|
+
candidates.set(v.id, `${v.address}:${v.port}`);
|
410
|
+
break;
|
411
|
+
default:
|
412
|
+
}
|
413
|
+
});
|
414
|
+
if (selectedCandidatePairId === '') {
|
415
|
+
return undefined;
|
416
|
+
}
|
417
|
+
const selectedID = (_a = candidatePairs.get(selectedCandidatePairId)) === null || _a === void 0 ? void 0 : _a.remoteCandidateId;
|
418
|
+
if (selectedID === undefined) {
|
419
|
+
return undefined;
|
420
|
+
}
|
421
|
+
return candidates.get(selectedID);
|
422
|
+
});
|
423
|
+
}
|
385
424
|
//# sourceMappingURL=RTCEngine.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RTCEngine.js","sourceRoot":"","sources":["../../src/room/RTCEngine.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"RTCEngine.js","sourceRoot":"","sources":["../../src/room/RTCEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/room/Room.d.ts
CHANGED
@@ -39,6 +39,8 @@ declare class Room extends EventEmitter {
|
|
39
39
|
metadata: string | undefined;
|
40
40
|
/** options of room */
|
41
41
|
options: RoomOptions;
|
42
|
+
/** connect options of room */
|
43
|
+
private connOptions?;
|
42
44
|
private audioEnabled;
|
43
45
|
private audioContext?;
|
44
46
|
/**
|
@@ -61,6 +63,16 @@ declare class Room extends EventEmitter {
|
|
61
63
|
* disconnects the room, emits [[RoomEvent.Disconnected]]
|
62
64
|
*/
|
63
65
|
disconnect: (stopTracks?: boolean) => void;
|
66
|
+
/**
|
67
|
+
* retrieves a participant by identity
|
68
|
+
* @param identity
|
69
|
+
* @returns
|
70
|
+
*/
|
71
|
+
getParticipantByIdentity(identity: string): Participant | undefined;
|
72
|
+
/**
|
73
|
+
* @internal for testing
|
74
|
+
*/
|
75
|
+
simulateScenario(scenario: string): void;
|
64
76
|
private onBeforeUnload;
|
65
77
|
/**
|
66
78
|
* Browsers have different policies regarding audio playback. Most requiring
|
@@ -91,6 +103,8 @@ declare class Room extends EventEmitter {
|
|
91
103
|
private handleParticipantDisconnected;
|
92
104
|
private handleActiveSpeakersUpdate;
|
93
105
|
private handleSpeakersChanged;
|
106
|
+
private handleStreamStateUpdate;
|
107
|
+
private handleSubscriptionPermissionUpdate;
|
94
108
|
private handleDataPacket;
|
95
109
|
private handleAudioPlaybackStarted;
|
96
110
|
private handleAudioPlaybackFailed;
|
@@ -99,6 +113,7 @@ declare class Room extends EventEmitter {
|
|
99
113
|
private handleConnectionQualityUpdate;
|
100
114
|
private acquireAudioContext;
|
101
115
|
private getOrCreateParticipant;
|
116
|
+
private sendSyncState;
|
102
117
|
/** @internal */
|
103
118
|
emit(event: string | symbol, ...args: any[]): boolean;
|
104
119
|
}
|
package/dist/room/Room.js
CHANGED
@@ -33,15 +33,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
34
34
|
exports.RoomState = void 0;
|
35
35
|
const events_1 = require("events");
|
36
|
+
const SignalClient_1 = require("../api/SignalClient");
|
36
37
|
const logger_1 = __importDefault(require("../logger"));
|
37
38
|
const livekit_models_1 = require("../proto/livekit_models");
|
39
|
+
const livekit_rtc_1 = require("../proto/livekit_rtc");
|
38
40
|
const DeviceManager_1 = __importDefault(require("./DeviceManager"));
|
39
41
|
const errors_1 = require("./errors");
|
40
42
|
const events_2 = require("./events");
|
41
43
|
const LocalParticipant_1 = __importDefault(require("./participant/LocalParticipant"));
|
42
44
|
const RemoteParticipant_1 = __importDefault(require("./participant/RemoteParticipant"));
|
43
45
|
const RTCEngine_1 = __importStar(require("./RTCEngine"));
|
44
|
-
const
|
46
|
+
const defaults_1 = require("./track/defaults");
|
45
47
|
const Track_1 = require("./track/Track");
|
46
48
|
const utils_1 = require("./utils");
|
47
49
|
var RoomState;
|
@@ -50,22 +52,6 @@ var RoomState;
|
|
50
52
|
RoomState["Connected"] = "connected";
|
51
53
|
RoomState["Reconnecting"] = "reconnecting";
|
52
54
|
})(RoomState = exports.RoomState || (exports.RoomState = {}));
|
53
|
-
const publishDefaults = {
|
54
|
-
audioBitrate: options_1.AudioPresets.speech.maxBitrate,
|
55
|
-
dtx: true,
|
56
|
-
simulcast: true,
|
57
|
-
screenShareEncoding: options_1.ScreenSharePresets.hd_15.encoding,
|
58
|
-
stopMicTrackOnMute: false,
|
59
|
-
};
|
60
|
-
const audioDefaults = {
|
61
|
-
autoGainControl: true,
|
62
|
-
channelCount: 1,
|
63
|
-
echoCancellation: true,
|
64
|
-
noiseSuppression: true,
|
65
|
-
};
|
66
|
-
const videoDefaults = {
|
67
|
-
resolution: options_1.VideoPresets.qhd.resolution,
|
68
|
-
};
|
69
55
|
/**
|
70
56
|
* In LiveKit, a room is the logical grouping for a list of participants.
|
71
57
|
* Participants in a room can publish tracks, and subscribe to others' tracks.
|
@@ -107,12 +93,18 @@ class Room extends events_1.EventEmitter {
|
|
107
93
|
if (opts === null || opts === void 0 ? void 0 : opts.rtcConfig) {
|
108
94
|
this.engine.rtcConfig = opts.rtcConfig;
|
109
95
|
}
|
96
|
+
this.connOptions = opts;
|
110
97
|
try {
|
111
98
|
const joinResponse = yield this.engine.join(url, token, opts);
|
112
99
|
logger_1.default.debug('connected to Livekit Server', joinResponse.serverVersion);
|
113
100
|
if (!joinResponse.serverVersion) {
|
114
101
|
throw new errors_1.UnsupportedServer('unknown server version');
|
115
102
|
}
|
103
|
+
if (joinResponse.serverVersion === '0.15.1' && this.options.dynacast) {
|
104
|
+
logger_1.default.debug('disabling dynacast due to server version');
|
105
|
+
// dynacast has a bug in 0.15.1, so we cannot use it then
|
106
|
+
this.options.dynacast = false;
|
107
|
+
}
|
116
108
|
this.state = RoomState.Connected;
|
117
109
|
const pi = joinResponse.participant;
|
118
110
|
this.localParticipant = new LocalParticipant_1.default(pi.sid, pi.identity, this.engine, this.options);
|
@@ -149,6 +141,7 @@ class Room extends events_1.EventEmitter {
|
|
149
141
|
});
|
150
142
|
this.name = joinResponse.room.name;
|
151
143
|
this.sid = joinResponse.room.sid;
|
144
|
+
this.metadata = joinResponse.room.metadata;
|
152
145
|
}
|
153
146
|
catch (err) {
|
154
147
|
this.engine.close();
|
@@ -175,8 +168,10 @@ class Room extends events_1.EventEmitter {
|
|
175
168
|
*/
|
176
169
|
this.disconnect = (stopTracks = true) => {
|
177
170
|
// send leave
|
178
|
-
this.engine
|
179
|
-
|
171
|
+
if (this.engine) {
|
172
|
+
this.engine.client.sendLeave();
|
173
|
+
this.engine.close();
|
174
|
+
}
|
180
175
|
this.handleDisconnect(stopTracks);
|
181
176
|
/* @ts-ignore */
|
182
177
|
this.engine = undefined;
|
@@ -184,6 +179,31 @@ class Room extends events_1.EventEmitter {
|
|
184
179
|
this.onBeforeUnload = () => {
|
185
180
|
this.disconnect();
|
186
181
|
};
|
182
|
+
this.handleParticipantUpdates = (participantInfos) => {
|
183
|
+
// handle changes to participant state, and send events
|
184
|
+
participantInfos.forEach((info) => {
|
185
|
+
if (info.sid === this.localParticipant.sid) {
|
186
|
+
this.localParticipant.updateInfo(info);
|
187
|
+
return;
|
188
|
+
}
|
189
|
+
let remoteParticipant = this.participants.get(info.sid);
|
190
|
+
const isNewParticipant = !remoteParticipant;
|
191
|
+
// create participant if doesn't exist
|
192
|
+
remoteParticipant = this.getOrCreateParticipant(info.sid, info);
|
193
|
+
// when it's disconnected, send updates
|
194
|
+
if (info.state === livekit_models_1.ParticipantInfo_State.DISCONNECTED) {
|
195
|
+
this.handleParticipantDisconnected(info.sid, remoteParticipant);
|
196
|
+
}
|
197
|
+
else if (isNewParticipant) {
|
198
|
+
// fire connected event
|
199
|
+
this.emit(events_2.RoomEvent.ParticipantConnected, remoteParticipant);
|
200
|
+
}
|
201
|
+
else {
|
202
|
+
// just update, no events
|
203
|
+
remoteParticipant.updateInfo(info);
|
204
|
+
}
|
205
|
+
});
|
206
|
+
};
|
187
207
|
// updates are sent only when there's a change to speaker ordering
|
188
208
|
this.handleActiveSpeakersUpdate = (speakers) => {
|
189
209
|
const activeSpeakers = [];
|
@@ -245,6 +265,34 @@ class Room extends events_1.EventEmitter {
|
|
245
265
|
this.activeSpeakers = activeSpeakers;
|
246
266
|
this.emit(events_2.RoomEvent.ActiveSpeakersChanged, activeSpeakers);
|
247
267
|
};
|
268
|
+
this.handleStreamStateUpdate = (streamStateUpdate) => {
|
269
|
+
streamStateUpdate.streamStates.forEach((streamState) => {
|
270
|
+
const participant = this.participants.get(streamState.participantSid);
|
271
|
+
if (!participant) {
|
272
|
+
return;
|
273
|
+
}
|
274
|
+
const pub = participant.getTrackPublication(streamState.trackSid);
|
275
|
+
if (!pub || !pub.track) {
|
276
|
+
return;
|
277
|
+
}
|
278
|
+
pub.track.streamState = Track_1.Track.streamStateFromProto(streamState.state);
|
279
|
+
participant.emit(events_2.ParticipantEvent.TrackStreamStateChanged, pub, pub.track.streamState);
|
280
|
+
this.emit(events_2.ParticipantEvent.TrackStreamStateChanged, pub, pub.track.streamState, participant);
|
281
|
+
});
|
282
|
+
};
|
283
|
+
this.handleSubscriptionPermissionUpdate = (update) => {
|
284
|
+
const participant = this.participants.get(update.participantSid);
|
285
|
+
if (!participant) {
|
286
|
+
return;
|
287
|
+
}
|
288
|
+
const pub = participant.getTrackPublication(update.trackSid);
|
289
|
+
if (!pub) {
|
290
|
+
return;
|
291
|
+
}
|
292
|
+
pub._allowed = update.allowed;
|
293
|
+
participant.emit(events_2.ParticipantEvent.TrackSubscriptionPermissionChanged, pub, pub.subscriptionStatus);
|
294
|
+
this.emit(events_2.ParticipantEvent.TrackSubscriptionPermissionChanged, pub, pub.subscriptionStatus, participant);
|
295
|
+
};
|
248
296
|
this.handleDataPacket = (userPacket, kind) => {
|
249
297
|
// find the participant
|
250
298
|
const participant = this.participants.get(userPacket.participantSid);
|
@@ -288,9 +336,9 @@ class Room extends events_1.EventEmitter {
|
|
288
336
|
};
|
289
337
|
this.participants = new Map();
|
290
338
|
this.options = options || {};
|
291
|
-
this.options.audioCaptureDefaults = Object.assign(Object.assign({}, audioDefaults), options === null || options === void 0 ? void 0 : options.audioCaptureDefaults);
|
292
|
-
this.options.videoCaptureDefaults = Object.assign(Object.assign({}, videoDefaults), options === null || options === void 0 ? void 0 : options.videoCaptureDefaults);
|
293
|
-
this.options.publishDefaults = Object.assign(Object.assign({}, publishDefaults), options === null || options === void 0 ? void 0 : options.publishDefaults);
|
339
|
+
this.options.audioCaptureDefaults = Object.assign(Object.assign({}, defaults_1.audioDefaults), options === null || options === void 0 ? void 0 : options.audioCaptureDefaults);
|
340
|
+
this.options.videoCaptureDefaults = Object.assign(Object.assign({}, defaults_1.videoDefaults), options === null || options === void 0 ? void 0 : options.videoCaptureDefaults);
|
341
|
+
this.options.publishDefaults = Object.assign(Object.assign({}, defaults_1.publishDefaults), options === null || options === void 0 ? void 0 : options.publishDefaults);
|
294
342
|
this.createEngine();
|
295
343
|
this.localParticipant = new LocalParticipant_1.default('', '', this.engine, this.options);
|
296
344
|
}
|
@@ -299,18 +347,19 @@ class Room extends events_1.EventEmitter {
|
|
299
347
|
return;
|
300
348
|
}
|
301
349
|
this.engine = new RTCEngine_1.default();
|
350
|
+
this.engine.client.signalLatency = this.options.expSignalLatency;
|
302
351
|
this.engine.on(events_2.EngineEvent.MediaTrackAdded, (mediaTrack, stream, receiver) => {
|
303
352
|
this.onTrackAdded(mediaTrack, stream, receiver);
|
304
353
|
});
|
305
354
|
this.engine.on(events_2.EngineEvent.Disconnected, () => {
|
306
355
|
this.handleDisconnect();
|
307
356
|
});
|
308
|
-
this.engine.
|
309
|
-
|
310
|
-
|
311
|
-
this.engine.
|
357
|
+
this.engine.client.onParticipantUpdate = this.handleParticipantUpdates;
|
358
|
+
this.engine.client.onRoomUpdate = this.handleRoomUpdate;
|
359
|
+
this.engine.client.onSpeakersChanged = this.handleSpeakersChanged;
|
360
|
+
this.engine.client.onStreamStateUpdate = this.handleStreamStateUpdate;
|
361
|
+
this.engine.client.onSubscriptionPermissionUpdate = this.handleSubscriptionPermissionUpdate;
|
312
362
|
this.engine.on(events_2.EngineEvent.ActiveSpeakersUpdate, this.handleActiveSpeakersUpdate);
|
313
|
-
this.engine.on(events_2.EngineEvent.SpeakersChanged, this.handleSpeakersChanged);
|
314
363
|
this.engine.on(events_2.EngineEvent.DataPacketReceived, this.handleDataPacket);
|
315
364
|
this.engine.on(events_2.EngineEvent.Reconnecting, () => {
|
316
365
|
this.state = RoomState.Reconnecting;
|
@@ -320,7 +369,12 @@ class Room extends events_1.EventEmitter {
|
|
320
369
|
this.state = RoomState.Connected;
|
321
370
|
this.emit(events_2.RoomEvent.Reconnected);
|
322
371
|
});
|
323
|
-
this.engine.on(events_2.EngineEvent.
|
372
|
+
this.engine.on(events_2.EngineEvent.SignalConnected, () => {
|
373
|
+
if (this.state === RoomState.Reconnecting) {
|
374
|
+
this.sendSyncState();
|
375
|
+
}
|
376
|
+
});
|
377
|
+
this.engine.client.onConnectionQuality = this.handleConnectionQualityUpdate;
|
324
378
|
}
|
325
379
|
/**
|
326
380
|
* getLocalDevices abstracts navigator.mediaDevices.enumerateDevices.
|
@@ -333,6 +387,53 @@ class Room extends events_1.EventEmitter {
|
|
333
387
|
static getLocalDevices(kind) {
|
334
388
|
return DeviceManager_1.default.getInstance().getDevices(kind);
|
335
389
|
}
|
390
|
+
/**
|
391
|
+
* retrieves a participant by identity
|
392
|
+
* @param identity
|
393
|
+
* @returns
|
394
|
+
*/
|
395
|
+
getParticipantByIdentity(identity) {
|
396
|
+
for (const [, p] of this.participants) {
|
397
|
+
if (p.identity === identity) {
|
398
|
+
return p;
|
399
|
+
}
|
400
|
+
}
|
401
|
+
if (this.localParticipant.identity === identity) {
|
402
|
+
return this.localParticipant;
|
403
|
+
}
|
404
|
+
}
|
405
|
+
/**
|
406
|
+
* @internal for testing
|
407
|
+
*/
|
408
|
+
simulateScenario(scenario) {
|
409
|
+
let req;
|
410
|
+
switch (scenario) {
|
411
|
+
case 'speaker':
|
412
|
+
req = livekit_rtc_1.SimulateScenario.fromPartial({
|
413
|
+
speakerUpdate: 3,
|
414
|
+
});
|
415
|
+
break;
|
416
|
+
case 'node-failure':
|
417
|
+
req = livekit_rtc_1.SimulateScenario.fromPartial({
|
418
|
+
nodeFailure: true,
|
419
|
+
});
|
420
|
+
break;
|
421
|
+
case 'server-leave':
|
422
|
+
req = livekit_rtc_1.SimulateScenario.fromPartial({
|
423
|
+
serverLeave: true,
|
424
|
+
});
|
425
|
+
break;
|
426
|
+
case 'migration':
|
427
|
+
req = livekit_rtc_1.SimulateScenario.fromPartial({
|
428
|
+
migration: true,
|
429
|
+
});
|
430
|
+
break;
|
431
|
+
default:
|
432
|
+
}
|
433
|
+
if (req) {
|
434
|
+
this.engine.client.sendSimulateScenario(req);
|
435
|
+
}
|
436
|
+
}
|
336
437
|
/**
|
337
438
|
* Browsers have different policies regarding audio playback. Most requiring
|
338
439
|
* some form of user interaction (click/tap/etc).
|
@@ -422,7 +523,7 @@ class Room extends events_1.EventEmitter {
|
|
422
523
|
if (!trackId || trackId === '')
|
423
524
|
trackId = mediaTrack.id;
|
424
525
|
const participant = this.getOrCreateParticipant(participantId);
|
425
|
-
participant.addSubscribedMediaTrack(mediaTrack, trackId, receiver, this.options.
|
526
|
+
participant.addSubscribedMediaTrack(mediaTrack, trackId, stream, receiver, this.options.adaptiveStream);
|
426
527
|
}
|
427
528
|
handleDisconnect(shouldStopTracks = true) {
|
428
529
|
if (this.state === RoomState.Disconnected) {
|
@@ -433,13 +534,16 @@ class Room extends events_1.EventEmitter {
|
|
433
534
|
p.unpublishTrack(pub.trackSid);
|
434
535
|
});
|
435
536
|
});
|
436
|
-
|
437
|
-
|
438
|
-
|
537
|
+
this.localParticipant.tracks.forEach((pub) => {
|
538
|
+
var _a, _b;
|
539
|
+
if (pub.track) {
|
540
|
+
this.localParticipant.unpublishTrack(pub.track);
|
541
|
+
}
|
542
|
+
if (shouldStopTracks) {
|
439
543
|
(_a = pub.track) === null || _a === void 0 ? void 0 : _a.detach();
|
440
544
|
(_b = pub.track) === null || _b === void 0 ? void 0 : _b.stop();
|
441
|
-
}
|
442
|
-
}
|
545
|
+
}
|
546
|
+
});
|
443
547
|
this.participants.clear();
|
444
548
|
this.activeSpeakers = [];
|
445
549
|
if (this.audioContext) {
|
@@ -451,31 +555,6 @@ class Room extends events_1.EventEmitter {
|
|
451
555
|
this.state = RoomState.Disconnected;
|
452
556
|
this.emit(events_2.RoomEvent.Disconnected);
|
453
557
|
}
|
454
|
-
handleParticipantUpdates(participantInfos) {
|
455
|
-
// handle changes to participant state, and send events
|
456
|
-
participantInfos.forEach((info) => {
|
457
|
-
if (info.sid === this.localParticipant.sid) {
|
458
|
-
this.localParticipant.updateInfo(info);
|
459
|
-
return;
|
460
|
-
}
|
461
|
-
let remoteParticipant = this.participants.get(info.sid);
|
462
|
-
const isNewParticipant = !remoteParticipant;
|
463
|
-
// create participant if doesn't exist
|
464
|
-
remoteParticipant = this.getOrCreateParticipant(info.sid, info);
|
465
|
-
// when it's disconnected, send updates
|
466
|
-
if (info.state === livekit_models_1.ParticipantInfo_State.DISCONNECTED) {
|
467
|
-
this.handleParticipantDisconnected(info.sid, remoteParticipant);
|
468
|
-
}
|
469
|
-
else if (isNewParticipant) {
|
470
|
-
// fire connected event
|
471
|
-
this.emit(events_2.RoomEvent.ParticipantConnected, remoteParticipant);
|
472
|
-
}
|
473
|
-
else {
|
474
|
-
// just update, no events
|
475
|
-
remoteParticipant.updateInfo(info);
|
476
|
-
}
|
477
|
-
});
|
478
|
-
}
|
479
558
|
handleParticipantDisconnected(sid, participant) {
|
480
559
|
// remove and send event
|
481
560
|
this.participants.delete(sid);
|
@@ -553,6 +632,40 @@ class Room extends events_1.EventEmitter {
|
|
553
632
|
}
|
554
633
|
return participant;
|
555
634
|
}
|
635
|
+
sendSyncState() {
|
636
|
+
var _a;
|
637
|
+
if (this.engine.subscriber === undefined
|
638
|
+
|| this.engine.subscriber.pc.localDescription === null) {
|
639
|
+
return;
|
640
|
+
}
|
641
|
+
const previousSdp = this.engine.subscriber.pc.localDescription;
|
642
|
+
/* 1. autosubscribe on, so subscribed tracks = all tracks - unsub tracks,
|
643
|
+
in this case, we send unsub tracks, so server add all tracks to this
|
644
|
+
subscribe pc and unsub special tracks from it.
|
645
|
+
2. autosubscribe off, we send subscribed tracks.
|
646
|
+
*/
|
647
|
+
const sendUnsub = ((_a = this.connOptions) === null || _a === void 0 ? void 0 : _a.autoSubscribe) || false;
|
648
|
+
const trackSids = new Array();
|
649
|
+
this.participants.forEach((participant) => {
|
650
|
+
participant.tracks.forEach((track) => {
|
651
|
+
if (track.isSubscribed !== sendUnsub) {
|
652
|
+
trackSids.push(track.trackSid);
|
653
|
+
}
|
654
|
+
});
|
655
|
+
});
|
656
|
+
this.engine.client.sendSyncState({
|
657
|
+
answer: SignalClient_1.toProtoSessionDescription({
|
658
|
+
sdp: previousSdp.sdp,
|
659
|
+
type: previousSdp.type,
|
660
|
+
}),
|
661
|
+
subscription: {
|
662
|
+
trackSids,
|
663
|
+
subscribe: !sendUnsub,
|
664
|
+
participantTracks: [],
|
665
|
+
},
|
666
|
+
publishTracks: this.localParticipant.publishedTracksInfo(),
|
667
|
+
});
|
668
|
+
}
|
556
669
|
/** @internal */
|
557
670
|
emit(event, ...args) {
|
558
671
|
logger_1.default.debug('room event', event, ...args);
|