livekit-client 1.1.2 → 1.1.5
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/livekit-client.esm.mjs +205 -89
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/room/Room.d.ts +4 -1
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts +2 -1
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -1
- package/dist/src/room/track/LocalAudioTrack.d.ts +1 -1
- package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrack.d.ts +4 -2
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteVideoTrack.d.ts.map +1 -1
- package/dist/src/room/utils.d.ts +6 -0
- package/dist/src/room/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/room/Room.ts +150 -55
- package/src/room/participant/LocalParticipant.ts +7 -6
- package/src/room/participant/RemoteParticipant.ts +5 -11
- package/src/room/participant/publishUtils.ts +2 -2
- package/src/room/track/LocalAudioTrack.ts +7 -3
- package/src/room/track/LocalTrack.ts +11 -2
- package/src/room/track/LocalVideoTrack.ts +7 -3
- package/src/room/track/RemoteVideoTrack.ts +30 -2
- package/src/room/track/create.ts +2 -2
- package/src/room/utils.ts +15 -0
package/dist/src/room/Room.d.ts
CHANGED
@@ -55,6 +55,7 @@ declare class Room extends Room_base {
|
|
55
55
|
private audioContext?;
|
56
56
|
/** used for aborting pending connections to a LiveKit server */
|
57
57
|
private abortController?;
|
58
|
+
private connectFuture?;
|
58
59
|
/**
|
59
60
|
* Creates a new Room, the primary construct for a LiveKit session.
|
60
61
|
* @param options
|
@@ -70,7 +71,7 @@ declare class Room extends Room_base {
|
|
70
71
|
* @returns a list of available local devices
|
71
72
|
*/
|
72
73
|
static getLocalDevices(kind?: MediaDeviceKind, requestPermissions?: boolean): Promise<MediaDeviceInfo[]>;
|
73
|
-
connect: (url: string, token: string, opts?: RoomConnectOptions | undefined) => Promise<
|
74
|
+
connect: (url: string, token: string, opts?: RoomConnectOptions | undefined) => Promise<void>;
|
74
75
|
/**
|
75
76
|
* disconnects the room, emits [[RoomEvent.Disconnected]]
|
76
77
|
*/
|
@@ -109,6 +110,7 @@ declare class Room extends Room_base {
|
|
109
110
|
* @param deviceId
|
110
111
|
*/
|
111
112
|
switchActiveDevice(kind: MediaDeviceKind, deviceId: string): Promise<void>;
|
113
|
+
private recreateEngine;
|
112
114
|
private onTrackAdded;
|
113
115
|
private handleRestarting;
|
114
116
|
private handleRestarted;
|
@@ -135,6 +137,7 @@ declare class Room extends Room_base {
|
|
135
137
|
*/
|
136
138
|
private updateSubscriptions;
|
137
139
|
private setAndEmitConnectionState;
|
140
|
+
private emitWhenConnected;
|
138
141
|
emit<E extends keyof RoomEventCallbacks>(event: E, ...args: Parameters<RoomEventCallbacks[E]>): boolean;
|
139
142
|
}
|
140
143
|
export default Room;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Room.d.ts","sourceRoot":"","sources":["../../../src/room/Room.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,eAAe,EAGf,qBAAqB,EAItB,MAAM,yBAAyB,CAAC;AAWjC,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,WAAW,EAAE,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,iBAAiB,MAAM,iCAAiC,CAAC;AAChE,OAAO,SAAmC,MAAM,aAAa,CAAC;AAG9D,OAAO,qBAAqB,MAAM,+BAA+B,CAAC;AAElE,OAAO,sBAAsB,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAA0B,WAAW,EAAE,MAAM,eAAe,CAAC;AAIpE,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,YAAY,iBAAiB;CAC9B;AAED,oEAAoE;AACpE,eAAO,MAAM,SAAS,wBAAkB,CAAC;mCAUK,aAAa,kBAAkB,CAAC;AAR9E;;;;;;;GAOG;AACH,cAAM,IAAK,SAAQ,SAA4D;IAC7E,KAAK,EAAE,eAAe,CAAgC;IAEtD,wCAAwC;IACxC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAE7C;;;OAGG;IACH,cAAc,EAAE,WAAW,EAAE,CAAM;IAEnC,gBAAgB;IAChB,MAAM,EAAG,SAAS,CAAC;IAGnB,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAM;IAEjB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAM;IAElB,8BAA8B;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,oBAAoB;IACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAa;IAEzC,sBAAsB;IACtB,OAAO,EAAE,WAAW,CAAC;IAErB,OAAO,CAAC,aAAa,CAAsB;IAE3C,8BAA8B;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAqB;IAEzC,OAAO,CAAC,YAAY,CAAQ;IAE5B,OAAO,CAAC,YAAY,CAAC,CAAe;IAEpC,gEAAgE;IAChE,OAAO,CAAC,eAAe,CAAC,CAAkB;IAE1C;;;OAGG;gBACS,OAAO,CAAC,EAAE,WAAW;IAwBjC,OAAO,CAAC,YAAY;
|
1
|
+
{"version":3,"file":"Room.d.ts","sourceRoot":"","sources":["../../../src/room/Room.ts"],"names":[],"mappings":"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"}
|
@@ -14,10 +14,11 @@ export default class LocalParticipant extends Participant {
|
|
14
14
|
videoTracks: Map<string, LocalTrackPublication>;
|
15
15
|
/** map of track sid => all published tracks */
|
16
16
|
tracks: Map<string, LocalTrackPublication>;
|
17
|
+
/** @internal */
|
18
|
+
engine: RTCEngine;
|
17
19
|
private pendingPublishing;
|
18
20
|
private cameraError;
|
19
21
|
private microphoneError;
|
20
|
-
private engine;
|
21
22
|
private participantTrackPermissions;
|
22
23
|
private allParticipantsAllowedToSubscribe;
|
23
24
|
private roomOptions?;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocalParticipant.d.ts","sourceRoot":"","sources":["../../../../src/room/participant/LocalParticipant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAc,eAAe,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAChG,OAAO,EAEL,eAAe,EAGf,sBAAsB,EAEvB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,qBAAqB,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EAEzB,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAA0B,MAAM,8BAA8B,CAAC;AAElG,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAGpD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAEhD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAEhD,+CAA+C;IAC/C,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAE3C,OAAO,CAAC,iBAAiB,CAA2B;IAEpD,OAAO,CAAC,WAAW,CAAoB;IAEvC,OAAO,CAAC,eAAe,CAAoB;IAE3C,OAAO,CAAC,
|
1
|
+
{"version":3,"file":"LocalParticipant.d.ts","sourceRoot":"","sources":["../../../../src/room/participant/LocalParticipant.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RemoteParticipant.d.ts","sourceRoot":"","sources":["../../../../src/room/participant/RemoteParticipant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI7D,OAAO,sBAAsB,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAe,MAAM,gBAAgB,CAAC;AACrE,OAAO,WAAW,EAAE,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW;IACxD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAEjD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAEjD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAE5C,YAAY,EAAE,YAAY,CAAC;IAE3B,OAAO,CAAC,MAAM,CAAC,CAAS;IAExB,gBAAgB;IAChB,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,GAAG,iBAAiB;
|
1
|
+
{"version":3,"file":"RemoteParticipant.d.ts","sourceRoot":"","sources":["../../../../src/room/participant/RemoteParticipant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI7D,OAAO,sBAAsB,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAe,MAAM,gBAAgB,CAAC;AACrE,OAAO,WAAW,EAAE,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEvE,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAW;IACxD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAEjD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAEjD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAE5C,YAAY,EAAE,YAAY,CAAC;IAE3B,OAAO,CAAC,MAAM,CAAC,CAAS;IAExB,gBAAgB;IAChB,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,GAAG,iBAAiB;IAI9F,gBAAgB;gBACJ,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAQjE,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,sBAAsB;IAmBjE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAOlE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAOhE;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM;IAQxB;;OAEG;IACH,SAAS;IAQT,gBAAgB;IAChB,uBAAuB,CACrB,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,cAAc,EACzB,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,SAAS,CAAC,EAAE,MAAM;IAuEpB,gBAAgB;IAChB,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,sBAAsB,GAAG,SAAS;IAIvE,gBAAgB;IAChB,UAAU,CAAC,IAAI,EAAE,eAAe;IA0ChC,gBAAgB;IAChB,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,OAAO;IAoCtD,gBAAgB;IAChB,IAAI,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAC5C,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,GAChD,OAAO;CAIX"}
|
@@ -6,7 +6,7 @@ export default class LocalAudioTrack extends LocalTrack {
|
|
6
6
|
/** @internal */
|
7
7
|
stopOnMute: boolean;
|
8
8
|
private prevStats?;
|
9
|
-
constructor(mediaTrack: MediaStreamTrack, constraints?: MediaTrackConstraints);
|
9
|
+
constructor(mediaTrack: MediaStreamTrack, constraints?: MediaTrackConstraints, userProvidedTrack?: boolean);
|
10
10
|
setDeviceId(deviceId: string): Promise<void>;
|
11
11
|
mute(): Promise<LocalAudioTrack>;
|
12
12
|
unmute(): Promise<LocalAudioTrack>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocalAudioTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/LocalAudioTrack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAoC,MAAM,UAAU,CAAC;AAE9E,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIhD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IACrD,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,gBAAgB;IAChB,UAAU,EAAE,OAAO,CAAS;IAE5B,OAAO,CAAC,SAAS,CAAC,CAAmB;
|
1
|
+
{"version":3,"file":"LocalAudioTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/LocalAudioTrack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAoC,MAAM,UAAU,CAAC;AAE9E,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIhD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IACrD,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,gBAAgB;IAChB,UAAU,EAAE,OAAO,CAAS;IAE5B,OAAO,CAAC,SAAS,CAAC,CAAmB;gBAGnC,UAAU,EAAE,gBAAgB,EAC5B,WAAW,CAAC,EAAE,qBAAqB,EACnC,iBAAiB,UAAO;IAMpB,WAAW,CAAC,QAAQ,EAAE,MAAM;IAU5B,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAWhC,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IASlC,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB;cAWhC,OAAO,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAOjF,YAAY;IASZ,OAAO,CAAC,aAAa,CAsBnB;IAEI,cAAc,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAyBvD,eAAe;CAStB"}
|
@@ -8,18 +8,20 @@ export default class LocalTrack extends Track {
|
|
8
8
|
protected constraints: MediaTrackConstraints;
|
9
9
|
protected wasMuted: boolean;
|
10
10
|
protected reacquireTrack: boolean;
|
11
|
-
protected
|
11
|
+
protected providedByUser: boolean;
|
12
|
+
protected constructor(mediaTrack: MediaStreamTrack, kind: Track.Kind, constraints?: MediaTrackConstraints, userProvidedTrack?: boolean);
|
12
13
|
get id(): string;
|
13
14
|
get dimensions(): Track.Dimensions | undefined;
|
14
15
|
private _isUpstreamPaused;
|
15
16
|
get isUpstreamPaused(): boolean;
|
17
|
+
get isUserProvided(): boolean;
|
16
18
|
/**
|
17
19
|
* @returns DeviceID of the device that is currently being used for this track
|
18
20
|
*/
|
19
21
|
getDeviceId(): Promise<string | undefined>;
|
20
22
|
mute(): Promise<LocalTrack>;
|
21
23
|
unmute(): Promise<LocalTrack>;
|
22
|
-
replaceTrack(track: MediaStreamTrack): Promise<LocalTrack>;
|
24
|
+
replaceTrack(track: MediaStreamTrack, userProvidedTrack?: boolean): Promise<LocalTrack>;
|
23
25
|
protected restart(constraints?: MediaTrackConstraints): Promise<LocalTrack>;
|
24
26
|
protected setTrackMuted(muted: boolean): void;
|
25
27
|
protected get needsReAcquisition(): boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocalTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/LocalTrack.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAgC,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK;IAC3C,gBAAgB;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,gBAAgB;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,SAAS,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAE7C,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE5B,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;IAElC,SAAS,aACP,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,WAAW,CAAC,EAAE,qBAAqB;
|
1
|
+
{"version":3,"file":"LocalTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/LocalTrack.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAgC,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK;IAC3C,gBAAgB;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,gBAAgB;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,SAAS,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAE7C,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE5B,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;IAElC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;IAElC,SAAS,aACP,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,WAAW,CAAC,EAAE,qBAAqB,EACnC,iBAAiB,UAAQ;IAU3B,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,UAAU,IAAI,KAAK,CAAC,UAAU,GAAG,SAAS,CAa7C;IAED,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,IAAI,gBAAgB,YAEnB;IAED,IAAI,cAAc,YAEjB;IAED;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAW1C,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAK3B,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAK7B,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAAC,UAAU,CAAC;cAgC1E,OAAO,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAiDjF,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO;IAUtC,SAAS,KAAK,kBAAkB,IAAI,OAAO,CAO1C;cAEe,0BAA0B;IAmB1C,OAAO,CAAC,WAAW,CAKjB;IAEI,aAAa;IAeb,cAAc;CAarB"}
|
@@ -17,7 +17,7 @@ export default class LocalVideoTrack extends LocalTrack {
|
|
17
17
|
private encodings?;
|
18
18
|
private simulcastCodecs;
|
19
19
|
private subscribedCodecs?;
|
20
|
-
constructor(mediaTrack: MediaStreamTrack, constraints?: MediaTrackConstraints);
|
20
|
+
constructor(mediaTrack: MediaStreamTrack, constraints?: MediaTrackConstraints, userProvidedTrack?: boolean);
|
21
21
|
get isSimulcast(): boolean;
|
22
22
|
startMonitor(signalClient: SignalClient): void;
|
23
23
|
stop(): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocalVideoTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/LocalVideoTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAoC,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9E,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI5D,qBAAa,kBAAkB;IAC7B,KAAK,EAAE,UAAU,CAAC;IAElB,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;gBAE3B,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB;CAIlE;AAID,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IAErD,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,OAAO,CAAC,SAAS,CAAC,CAAgC;IAElD,OAAO,CAAC,SAAS,CAAC,CAA6B;IAE/C,OAAO,CAAC,eAAe,CAGnB;IAEJ,OAAO,CAAC,gBAAgB,CAAC,CAAoB;
|
1
|
+
{"version":3,"file":"LocalVideoTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/LocalVideoTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAoC,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE9E,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAI5D,qBAAa,kBAAkB;IAC7B,KAAK,EAAE,UAAU,CAAC;IAElB,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;gBAE3B,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB;CAIlE;AAID,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IAErD,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,OAAO,CAAC,SAAS,CAAC,CAAgC;IAElD,OAAO,CAAC,SAAS,CAAC,CAA6B;IAE/C,OAAO,CAAC,eAAe,CAGnB;IAEJ,OAAO,CAAC,gBAAgB,CAAC,CAAoB;gBAG3C,UAAU,EAAE,gBAAgB,EAC5B,WAAW,CAAC,EAAE,qBAAqB,EACnC,iBAAiB,UAAO;IAK1B,IAAI,WAAW,IAAI,OAAO,CAKzB;IAGD,YAAY,CAAC,YAAY,EAAE,YAAY;IAiBvC,IAAI;IAWE,IAAI,IAAI,OAAO,CAAC,eAAe,CAAC;IAUhC,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IASlC,cAAc,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA2CnD,oBAAoB,CAAC,UAAU,EAAE,YAAY;IAYvC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAY5B,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB;IAWhD,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,wBAAwB,EAAE,GAAG,kBAAkB;IAchG,uBAAuB,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY;IAgB/D;;;OAGG;IACG,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwC3E;;;OAGG;IACG,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,EAAE;IASxD,OAAO,CAAC,aAAa,CA4BnB;cAEc,0BAA0B;CAO3C;AA6DD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAW5D;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,wBAAwB,EAAE,GACrC,UAAU,EAAE,CA2Bd"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RemoteVideoTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/RemoteVideoTrack.ts"],"names":[],"mappings":"AAKA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,gBAAgB;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,OAAO,CAAC,SAAS,CAAC,CAAqB;IAEvC,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,sBAAsB,CAAC,CAAyB;IAExD,OAAO,CAAC,WAAW,CAAC,CAAU;IAE9B,OAAO,CAAC,cAAc,CAAC,CAAmB;IAE1C,OAAO,CAAC,aAAa,CAAkB;gBAGrC,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,cAAc,EACzB,sBAAsB,CAAC,EAAE,sBAAsB;IASjD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,gBAAgB,qBAOnB;IAED,gBAAgB;IAChB,QAAQ,CAAC,KAAK,EAAE,OAAO;IAavB,MAAM,IAAI,gBAAgB;IAC1B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IAqBnD;;;;OAIG;IACH,kBAAkB,CAAC,WAAW,EAAE,WAAW;
|
1
|
+
{"version":3,"file":"RemoteVideoTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/RemoteVideoTrack.ts"],"names":[],"mappings":"AAKA,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,WAAW;IACvD,gBAAgB;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,OAAO,CAAC,SAAS,CAAC,CAAqB;IAEvC,OAAO,CAAC,YAAY,CAAqB;IAEzC,OAAO,CAAC,sBAAsB,CAAC,CAAyB;IAExD,OAAO,CAAC,WAAW,CAAC,CAAU;IAE9B,OAAO,CAAC,cAAc,CAAC,CAAmB;IAE1C,OAAO,CAAC,aAAa,CAAkB;gBAGrC,UAAU,EAAE,gBAAgB,EAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,cAAc,EACzB,sBAAsB,CAAC,EAAE,sBAAsB;IASjD,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,gBAAgB,qBAOnB;IAED,gBAAgB;IAChB,QAAQ,CAAC,KAAK,EAAE,OAAO;IAavB,MAAM,IAAI,gBAAgB;IAC1B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IAqBnD;;;;OAIG;IACH,kBAAkB,CAAC,WAAW,EAAE,WAAW;IAuB3C;;;;OAIG;IACH,wBAAwB,CAAC,WAAW,EAAE,WAAW;IASjD,MAAM,IAAI,gBAAgB,EAAE;IAC5B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB;IAgBnD,gBAAgB;IAChB,wBAAwB,IAAI,MAAM,GAAG,SAAS;IAI9C,SAAS,CAAC,eAAe,sBAevB;YAEY,gBAAgB;IA+B9B,OAAO,CAAC,oBAAoB;cAQZ,0BAA0B;IAM1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAEnB;IAEnB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,gBAAgB;CAyBzB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,IAAI,MAAM,CAAC;IAChB,MAAM,IAAI,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IAExC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;IAChB,aAAa,IAAI,IAAI,CAAC;CACvB"}
|
package/dist/src/room/utils.d.ts
CHANGED
@@ -14,4 +14,10 @@ export interface ObservableMediaElement extends HTMLMediaElement {
|
|
14
14
|
export declare function getClientInfo(): ClientInfo;
|
15
15
|
export declare function getEmptyVideoStreamTrack(): MediaStreamTrack;
|
16
16
|
export declare function getEmptyAudioStreamTrack(): MediaStreamTrack;
|
17
|
+
export declare class Future<T> {
|
18
|
+
promise: Promise<T>;
|
19
|
+
resolve: (arg: T) => void;
|
20
|
+
reject: (e: any) => void;
|
21
|
+
constructor();
|
22
|
+
}
|
17
23
|
//# sourceMappingURL=utils.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/room/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AAKrE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvD;AAED,wBAAsB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,SAAS,IAAI,OAAO,CAGnC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAeD,eAAO,MAAM,iBAAiB,sBAG7B,CAAC;AAGF,eAAO,MAAM,uBAAuB,4BAOnC,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,YAAY,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,uBAAuB,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACrE;AAED,wBAAgB,aAAa,IAAI,UAAU,CAO1C;AAID,wBAAgB,wBAAwB,qBAgBvC;AAID,wBAAgB,wBAAwB,qBAevC"}
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/room/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AAKrE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvD;AAED,wBAAsB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,SAAS,IAAI,OAAO,CAGnC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAeD,eAAO,MAAM,iBAAiB,sBAG7B,CAAC;AAGF,eAAO,MAAM,uBAAuB,4BAOnC,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,YAAY,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,uBAAuB,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACrE;AAED,wBAAgB,aAAa,IAAI,UAAU,CAO1C;AAID,wBAAgB,wBAAwB,qBAgBvC;AAID,wBAAgB,wBAAwB,qBAevC;AAED,qBAAa,MAAM,CAAC,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAEpB,OAAO,EAAG,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAE3B,MAAM,EAAG,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;;CAQ3B"}
|
package/package.json
CHANGED
package/src/room/Room.ts
CHANGED
@@ -35,7 +35,7 @@ import { Track } from './track/Track';
|
|
35
35
|
import { TrackPublication } from './track/TrackPublication';
|
36
36
|
import { AdaptiveStreamSettings, RemoteTrack } from './track/types';
|
37
37
|
import { getNewAudioContext } from './track/utils';
|
38
|
-
import { isWeb, unpackStreamId } from './utils';
|
38
|
+
import { Future, isWeb, unpackStreamId } from './utils';
|
39
39
|
|
40
40
|
export enum ConnectionState {
|
41
41
|
Disconnected = 'disconnected',
|
@@ -98,6 +98,8 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
98
98
|
/** used for aborting pending connections to a LiveKit server */
|
99
99
|
private abortController?: AbortController;
|
100
100
|
|
101
|
+
private connectFuture?: Future<void>;
|
102
|
+
|
101
103
|
/**
|
102
104
|
* Creates a new Room, the primary construct for a LiveKit session.
|
103
105
|
* @param options
|
@@ -170,6 +172,10 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
170
172
|
})
|
171
173
|
.on(EngineEvent.Restarting, this.handleRestarting)
|
172
174
|
.on(EngineEvent.Restarted, this.handleRestarted);
|
175
|
+
|
176
|
+
if (this.localParticipant) {
|
177
|
+
this.localParticipant.engine = this.engine;
|
178
|
+
}
|
173
179
|
}
|
174
180
|
|
175
181
|
/**
|
@@ -187,13 +193,16 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
187
193
|
return DeviceManager.getInstance().getDevices(kind, requestPermissions);
|
188
194
|
}
|
189
195
|
|
190
|
-
connect = async (url: string, token: string, opts?: RoomConnectOptions) => {
|
191
|
-
|
192
|
-
|
196
|
+
connect = async (url: string, token: string, opts?: RoomConnectOptions): Promise<void> => {
|
197
|
+
if (this.state === ConnectionState.Connected) {
|
198
|
+
// when the state is reconnecting or connected, this function returns immediately
|
193
199
|
log.warn(`already connected to room ${this.name}`);
|
194
200
|
return;
|
195
201
|
}
|
196
202
|
|
203
|
+
if (this.connectFuture) {
|
204
|
+
return this.connectFuture.promise;
|
205
|
+
}
|
197
206
|
this.setAndEmitConnectionState(ConnectionState.Connecting);
|
198
207
|
|
199
208
|
if (!this.abortController || this.abortController.signal.aborted) {
|
@@ -287,43 +296,52 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
287
296
|
this.metadata = joinResponse.room!.metadata;
|
288
297
|
this.emit(RoomEvent.SignalConnected);
|
289
298
|
} catch (err) {
|
290
|
-
this.
|
291
|
-
this.setAndEmitConnectionState(
|
299
|
+
this.recreateEngine();
|
300
|
+
this.setAndEmitConnectionState(
|
301
|
+
ConnectionState.Disconnected,
|
302
|
+
new ConnectionError('could not establish signal connection'),
|
303
|
+
);
|
292
304
|
throw err;
|
293
305
|
}
|
294
306
|
|
295
307
|
// don't return until ICE connected
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
308
|
+
const connectTimeout = setTimeout(() => {
|
309
|
+
// timeout
|
310
|
+
this.recreateEngine();
|
311
|
+
this.setAndEmitConnectionState(
|
312
|
+
ConnectionState.Disconnected,
|
313
|
+
new ConnectionError('could not connect PeerConnection after timeout'),
|
314
|
+
);
|
315
|
+
}, maxICEConnectTimeout);
|
316
|
+
const abortHandler = () => {
|
317
|
+
log.warn('closing engine');
|
318
|
+
clearTimeout(connectTimeout);
|
319
|
+
this.recreateEngine();
|
320
|
+
this.setAndEmitConnectionState(
|
321
|
+
ConnectionState.Disconnected,
|
322
|
+
new ConnectionError('room connection has been cancelled'),
|
323
|
+
);
|
324
|
+
};
|
325
|
+
if (this.abortController?.signal.aborted) {
|
326
|
+
abortHandler();
|
327
|
+
}
|
328
|
+
this.abortController?.signal.addEventListener('abort', abortHandler);
|
329
|
+
|
330
|
+
this.engine.once(EngineEvent.Connected, () => {
|
331
|
+
clearTimeout(connectTimeout);
|
332
|
+
this.abortController?.signal.removeEventListener('abort', abortHandler);
|
333
|
+
// also hook unload event
|
334
|
+
if (isWeb()) {
|
335
|
+
window.addEventListener('beforeunload', this.onBeforeUnload);
|
336
|
+
navigator.mediaDevices?.addEventListener('devicechange', this.handleDeviceChange);
|
312
337
|
}
|
313
|
-
this.
|
314
|
-
|
315
|
-
this.engine.once(EngineEvent.Connected, () => {
|
316
|
-
clearTimeout(connectTimeout);
|
317
|
-
this.abortController?.signal.removeEventListener('abort', abortHandler);
|
318
|
-
// also hook unload event
|
319
|
-
if (isWeb()) {
|
320
|
-
window.addEventListener('beforeunload', this.onBeforeUnload);
|
321
|
-
navigator.mediaDevices?.addEventListener('devicechange', this.handleDeviceChange);
|
322
|
-
}
|
323
|
-
this.setAndEmitConnectionState(ConnectionState.Connected);
|
324
|
-
resolve(this);
|
325
|
-
});
|
338
|
+
this.setAndEmitConnectionState(ConnectionState.Connected);
|
326
339
|
});
|
340
|
+
|
341
|
+
if (this.connectFuture) {
|
342
|
+
/** @ts-ignore */
|
343
|
+
return this.connectFuture.promise;
|
344
|
+
}
|
327
345
|
};
|
328
346
|
|
329
347
|
/**
|
@@ -495,11 +513,37 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
495
513
|
}
|
496
514
|
}
|
497
515
|
|
516
|
+
private recreateEngine() {
|
517
|
+
this.engine.close();
|
518
|
+
/* @ts-ignore */
|
519
|
+
this.engine = undefined;
|
520
|
+
|
521
|
+
// clear out existing remote participants, since they may have attached
|
522
|
+
// the old engine
|
523
|
+
this.participants.clear();
|
524
|
+
|
525
|
+
this.createEngine();
|
526
|
+
}
|
527
|
+
|
498
528
|
private onTrackAdded(
|
499
529
|
mediaTrack: MediaStreamTrack,
|
500
530
|
stream: MediaStream,
|
501
531
|
receiver?: RTCRtpReceiver,
|
502
532
|
) {
|
533
|
+
// don't fire onSubscribed when connecting
|
534
|
+
// WebRTC fires onTrack as soon as setRemoteDescription is called on the offer
|
535
|
+
// at that time, ICE connectivity has not been established so the track is not
|
536
|
+
// technically subscribed.
|
537
|
+
// We'll defer these events until when the room is connected or eventually disconnected.
|
538
|
+
if (this.state === ConnectionState.Connecting || this.state === ConnectionState.Reconnecting) {
|
539
|
+
setTimeout(() => {
|
540
|
+
this.onTrackAdded(mediaTrack, stream, receiver);
|
541
|
+
}, 50);
|
542
|
+
return;
|
543
|
+
}
|
544
|
+
if (this.state === ConnectionState.Disconnected) {
|
545
|
+
log.warn('skipping incoming track after Room disconnected');
|
546
|
+
}
|
503
547
|
const parts = unpackStreamId(stream.id);
|
504
548
|
const participantId = parts[0];
|
505
549
|
let trackId = parts[1];
|
@@ -524,14 +568,14 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
524
568
|
}
|
525
569
|
|
526
570
|
private handleRestarting = () => {
|
527
|
-
if (this.setAndEmitConnectionState(ConnectionState.Reconnecting)) {
|
528
|
-
this.emit(RoomEvent.Reconnecting);
|
529
|
-
}
|
530
|
-
|
531
571
|
// also unwind existing participants & existing subscriptions
|
532
572
|
for (const p of this.participants.values()) {
|
533
573
|
this.handleParticipantDisconnected(p.sid, p);
|
534
574
|
}
|
575
|
+
|
576
|
+
if (this.setAndEmitConnectionState(ConnectionState.Reconnecting)) {
|
577
|
+
this.emit(RoomEvent.Reconnecting);
|
578
|
+
}
|
535
579
|
};
|
536
580
|
|
537
581
|
private handleRestarted = async (joinResponse: JoinResponse) => {
|
@@ -562,7 +606,10 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
562
606
|
const track = pub.track!;
|
563
607
|
this.localParticipant.unpublishTrack(track, false);
|
564
608
|
if (!track.isMuted) {
|
565
|
-
if (
|
609
|
+
if (
|
610
|
+
(track instanceof LocalAudioTrack || track instanceof LocalVideoTrack) &&
|
611
|
+
!track.isUserProvided
|
612
|
+
) {
|
566
613
|
// we need to restart the track before publishing, often a full reconnect
|
567
614
|
// is necessary because computer had gone to sleep.
|
568
615
|
log.debug('restarting existing track', {
|
@@ -636,7 +683,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
636
683
|
this.handleParticipantDisconnected(info.sid, remoteParticipant);
|
637
684
|
} else if (isNewParticipant) {
|
638
685
|
// fire connected event
|
639
|
-
this.
|
686
|
+
this.emitWhenConnected(RoomEvent.ParticipantConnected, remoteParticipant);
|
640
687
|
} else {
|
641
688
|
// just update, no events
|
642
689
|
remoteParticipant.updateInfo(info);
|
@@ -655,7 +702,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
655
702
|
participant.tracks.forEach((publication) => {
|
656
703
|
participant.unpublishTrack(publication.trackSid, true);
|
657
704
|
});
|
658
|
-
this.
|
705
|
+
this.emitWhenConnected(RoomEvent.ParticipantDisconnected, participant);
|
659
706
|
}
|
660
707
|
|
661
708
|
// updates are sent only when there's a change to speaker ordering
|
@@ -690,7 +737,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
690
737
|
});
|
691
738
|
|
692
739
|
this.activeSpeakers = activeSpeakers;
|
693
|
-
this.
|
740
|
+
this.emitWhenConnected(RoomEvent.ActiveSpeakersChanged, activeSpeakers);
|
694
741
|
};
|
695
742
|
|
696
743
|
// process list of changed speakers
|
@@ -719,7 +766,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
719
766
|
const activeSpeakers = Array.from(lastSpeakers.values());
|
720
767
|
activeSpeakers.sort((a, b) => b.audioLevel - a.audioLevel);
|
721
768
|
this.activeSpeakers = activeSpeakers;
|
722
|
-
this.
|
769
|
+
this.emitWhenConnected(RoomEvent.ActiveSpeakersChanged, activeSpeakers);
|
723
770
|
};
|
724
771
|
|
725
772
|
private handleStreamStateUpdate = (streamStateUpdate: StreamStateUpdate) => {
|
@@ -734,7 +781,12 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
734
781
|
}
|
735
782
|
pub.track.streamState = Track.streamStateFromProto(streamState.state);
|
736
783
|
participant.emit(ParticipantEvent.TrackStreamStateChanged, pub, pub.track.streamState);
|
737
|
-
this.
|
784
|
+
this.emitWhenConnected(
|
785
|
+
ParticipantEvent.TrackStreamStateChanged,
|
786
|
+
pub,
|
787
|
+
pub.track.streamState,
|
788
|
+
participant,
|
789
|
+
);
|
738
790
|
});
|
739
791
|
};
|
740
792
|
|
@@ -754,7 +806,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
754
806
|
pub,
|
755
807
|
pub.subscriptionStatus,
|
756
808
|
);
|
757
|
-
this.
|
809
|
+
this.emitWhenConnected(
|
758
810
|
ParticipantEvent.TrackSubscriptionPermissionChanged,
|
759
811
|
pub,
|
760
812
|
pub.subscriptionStatus,
|
@@ -795,7 +847,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
795
847
|
|
796
848
|
private handleRoomUpdate = (r: RoomModel) => {
|
797
849
|
this.metadata = r.metadata;
|
798
|
-
this.
|
850
|
+
this.emitWhenConnected(RoomEvent.RoomMetadataChanged, r.metadata);
|
799
851
|
};
|
800
852
|
|
801
853
|
private handleConnectionQualityUpdate = (update: ConnectionQualityUpdate) => {
|
@@ -850,7 +902,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
850
902
|
// and remote participant joined the room
|
851
903
|
participant
|
852
904
|
.on(ParticipantEvent.TrackPublished, (trackPublication: RemoteTrackPublication) => {
|
853
|
-
this.
|
905
|
+
this.emitWhenConnected(RoomEvent.TrackPublished, trackPublication, participant);
|
854
906
|
})
|
855
907
|
.on(
|
856
908
|
ParticipantEvent.TrackSubscribed,
|
@@ -864,7 +916,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
864
916
|
},
|
865
917
|
)
|
866
918
|
.on(ParticipantEvent.TrackUnpublished, (publication: RemoteTrackPublication) => {
|
867
|
-
this.
|
919
|
+
this.emitWhenConnected(RoomEvent.TrackUnpublished, publication, participant);
|
868
920
|
})
|
869
921
|
.on(
|
870
922
|
ParticipantEvent.TrackUnsubscribed,
|
@@ -876,23 +928,32 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
876
928
|
this.emit(RoomEvent.TrackSubscriptionFailed, sid, participant);
|
877
929
|
})
|
878
930
|
.on(ParticipantEvent.TrackMuted, (pub: TrackPublication) => {
|
879
|
-
this.
|
931
|
+
this.emitWhenConnected(RoomEvent.TrackMuted, pub, participant);
|
880
932
|
})
|
881
933
|
.on(ParticipantEvent.TrackUnmuted, (pub: TrackPublication) => {
|
882
|
-
this.
|
934
|
+
this.emitWhenConnected(RoomEvent.TrackUnmuted, pub, participant);
|
883
935
|
})
|
884
936
|
.on(ParticipantEvent.ParticipantMetadataChanged, (metadata: string | undefined) => {
|
885
|
-
this.
|
937
|
+
this.emitWhenConnected(RoomEvent.ParticipantMetadataChanged, metadata, participant);
|
886
938
|
})
|
887
939
|
.on(ParticipantEvent.ConnectionQualityChanged, (quality: ConnectionQuality) => {
|
888
|
-
this.
|
940
|
+
this.emitWhenConnected(RoomEvent.ConnectionQualityChanged, quality, participant);
|
889
941
|
})
|
890
942
|
.on(
|
891
943
|
ParticipantEvent.ParticipantPermissionsChanged,
|
892
944
|
(prevPermissions: ParticipantPermission) => {
|
893
|
-
this.
|
945
|
+
this.emitWhenConnected(
|
946
|
+
RoomEvent.ParticipantPermissionsChanged,
|
947
|
+
prevPermissions,
|
948
|
+
participant,
|
949
|
+
);
|
894
950
|
},
|
895
951
|
);
|
952
|
+
|
953
|
+
// update info at the end after callbacks have been set up
|
954
|
+
if (info) {
|
955
|
+
participant.updateInfo(info);
|
956
|
+
}
|
896
957
|
return participant;
|
897
958
|
}
|
898
959
|
|
@@ -949,16 +1010,50 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
|
|
949
1010
|
}
|
950
1011
|
}
|
951
1012
|
|
952
|
-
private setAndEmitConnectionState(state: ConnectionState): boolean {
|
1013
|
+
private setAndEmitConnectionState(state: ConnectionState, error?: Error): boolean {
|
953
1014
|
if (state === this.state) {
|
954
1015
|
// unchanged
|
955
1016
|
return false;
|
956
1017
|
}
|
1018
|
+
switch (state) {
|
1019
|
+
case ConnectionState.Connecting:
|
1020
|
+
case ConnectionState.Reconnecting:
|
1021
|
+
if (!this.connectFuture) {
|
1022
|
+
// reuse existing connect future if possible
|
1023
|
+
this.connectFuture = new Future<void>();
|
1024
|
+
}
|
1025
|
+
break;
|
1026
|
+
case ConnectionState.Connected:
|
1027
|
+
if (this.connectFuture) {
|
1028
|
+
this.connectFuture.resolve();
|
1029
|
+
this.connectFuture = undefined;
|
1030
|
+
}
|
1031
|
+
break;
|
1032
|
+
case ConnectionState.Disconnected:
|
1033
|
+
if (this.connectFuture) {
|
1034
|
+
error ??= new Error('disconnected from Room');
|
1035
|
+
this.connectFuture.reject(error);
|
1036
|
+
this.connectFuture = undefined;
|
1037
|
+
}
|
1038
|
+
break;
|
1039
|
+
default:
|
1040
|
+
// nothing
|
1041
|
+
}
|
957
1042
|
this.state = state;
|
958
1043
|
this.emit(RoomEvent.ConnectionStateChanged, this.state);
|
959
1044
|
return true;
|
960
1045
|
}
|
961
1046
|
|
1047
|
+
private emitWhenConnected<E extends keyof RoomEventCallbacks>(
|
1048
|
+
event: E,
|
1049
|
+
...args: Parameters<RoomEventCallbacks[E]>
|
1050
|
+
): boolean {
|
1051
|
+
if (this.state === ConnectionState.Connected) {
|
1052
|
+
return this.emit(event, ...args);
|
1053
|
+
}
|
1054
|
+
return false;
|
1055
|
+
}
|
1056
|
+
|
962
1057
|
// /** @internal */
|
963
1058
|
emit<E extends keyof RoomEventCallbacks>(
|
964
1059
|
event: E,
|
@@ -42,14 +42,15 @@ export default class LocalParticipant extends Participant {
|
|
42
42
|
/** map of track sid => all published tracks */
|
43
43
|
tracks: Map<string, LocalTrackPublication>;
|
44
44
|
|
45
|
+
/** @internal */
|
46
|
+
engine: RTCEngine;
|
47
|
+
|
45
48
|
private pendingPublishing = new Set<Track.Source>();
|
46
49
|
|
47
50
|
private cameraError: Error | undefined;
|
48
51
|
|
49
52
|
private microphoneError: Error | undefined;
|
50
53
|
|
51
|
-
private engine: RTCEngine;
|
52
|
-
|
53
54
|
private participantTrackPermissions: Array<ParticipantTrackPermission> = [];
|
54
55
|
|
55
56
|
private allParticipantsAllowedToSubscribe: boolean = true;
|
@@ -366,11 +367,11 @@ export default class LocalParticipant extends Participant {
|
|
366
367
|
if (tracks.length === 0) {
|
367
368
|
throw new TrackInvalidError('no video track found');
|
368
369
|
}
|
369
|
-
const screenVideo = new LocalVideoTrack(tracks[0]);
|
370
|
+
const screenVideo = new LocalVideoTrack(tracks[0], undefined, false);
|
370
371
|
screenVideo.source = Track.Source.ScreenShare;
|
371
372
|
const localTracks: Array<LocalTrack> = [screenVideo];
|
372
373
|
if (stream.getAudioTracks().length > 0) {
|
373
|
-
const screenAudio = new LocalAudioTrack(stream.getAudioTracks()[0]);
|
374
|
+
const screenAudio = new LocalAudioTrack(stream.getAudioTracks()[0], undefined, false);
|
374
375
|
screenAudio.source = Track.Source.ScreenShareAudio;
|
375
376
|
localTracks.push(screenAudio);
|
376
377
|
}
|
@@ -395,10 +396,10 @@ export default class LocalParticipant extends Participant {
|
|
395
396
|
if (track instanceof MediaStreamTrack) {
|
396
397
|
switch (track.kind) {
|
397
398
|
case 'audio':
|
398
|
-
track = new LocalAudioTrack(track);
|
399
|
+
track = new LocalAudioTrack(track, undefined, true);
|
399
400
|
break;
|
400
401
|
case 'video':
|
401
|
-
track = new LocalVideoTrack(track);
|
402
|
+
track = new LocalVideoTrack(track, undefined, true);
|
402
403
|
break;
|
403
404
|
default:
|
404
405
|
throw new TrackInvalidError(`unsupported MediaStreamTrack kind ${track.kind}`);
|