livekit-client 2.13.5 → 2.13.7
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.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +82 -74
- 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/api/SignalClient.d.ts +5 -5
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/connectionHelper/checks/publishVideo.d.ts.map +1 -1
- package/dist/src/room/PCTransport.d.ts +3 -2
- package/dist/src/room/PCTransport.d.ts.map +1 -1
- package/dist/src/room/PCTransportManager.d.ts +3 -3
- package/dist/src/room/PCTransportManager.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +4 -0
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/ts4.2/src/api/SignalClient.d.ts +5 -5
- package/dist/ts4.2/src/room/PCTransport.d.ts +3 -2
- package/dist/ts4.2/src/room/PCTransportManager.d.ts +3 -3
- package/dist/ts4.2/src/room/RTCEngine.d.ts +4 -0
- package/package.json +8 -8
- package/src/api/SignalClient.ts +13 -14
- package/src/connectionHelper/checks/publishVideo.ts +1 -0
- package/src/room/PCTransport.ts +30 -4
- package/src/room/PCTransportManager.ts +10 -7
- package/src/room/RTCEngine.ts +15 -7
- package/src/room/Room.ts +9 -9
- package/src/room/track/LocalVideoTrack.ts +14 -15
@@ -34,8 +34,8 @@ export declare class SignalClient {
|
|
34
34
|
/** simulate signaling latency by delaying messages */
|
35
35
|
signalLatency?: number;
|
36
36
|
onClose?: (reason: string) => void;
|
37
|
-
onAnswer?: (sd: RTCSessionDescriptionInit) => void;
|
38
|
-
onOffer?: (sd: RTCSessionDescriptionInit) => void;
|
37
|
+
onAnswer?: (sd: RTCSessionDescriptionInit, offerId: number) => void;
|
38
|
+
onOffer?: (sd: RTCSessionDescriptionInit, offerId: number) => void;
|
39
39
|
onTrickle?: (sd: RTCIceCandidateInit, target: SignalTarget) => void;
|
40
40
|
onParticipantUpdate?: (updates: ParticipantInfo[]) => void;
|
41
41
|
onLocalTrackPublished?: (res: TrackPublishedResponse) => void;
|
@@ -79,8 +79,8 @@ export declare class SignalClient {
|
|
79
79
|
/** @internal */
|
80
80
|
resetCallbacks: () => void;
|
81
81
|
close(updateState?: boolean): Promise<void>;
|
82
|
-
sendOffer(offer: RTCSessionDescriptionInit): void;
|
83
|
-
sendAnswer(answer: RTCSessionDescriptionInit): Promise<void>;
|
82
|
+
sendOffer(offer: RTCSessionDescriptionInit, offerId: number): void;
|
83
|
+
sendAnswer(answer: RTCSessionDescriptionInit, offerId: number): Promise<void>;
|
84
84
|
sendIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
85
85
|
sendMuteTrack(trackSid: string, muted: boolean): Promise<void>;
|
86
86
|
sendAddTrack(req: AddTrackRequest): Promise<void>;
|
@@ -111,6 +111,6 @@ export declare class SignalClient {
|
|
111
111
|
private startPingInterval;
|
112
112
|
private clearPingInterval;
|
113
113
|
}
|
114
|
-
export declare function toProtoSessionDescription(rsd: RTCSessionDescription | RTCSessionDescriptionInit): SessionDescription;
|
114
|
+
export declare function toProtoSessionDescription(rsd: RTCSessionDescription | RTCSessionDescriptionInit, id?: number): SessionDescription;
|
115
115
|
export {};
|
116
116
|
//# sourceMappingURL=SignalClient.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SignalClient.d.ts","sourceRoot":"","sources":["../../../src/api/SignalClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,iBAAiB,EAEjB,uBAAuB,EAEvB,YAAY,EACZ,YAAY,EAGZ,eAAe,EAEf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EAEb,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EAEvB,4BAA4B,EAC5B,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EAIxB,kBAAkB,EAClB,mBAAmB,EAEnB,UAAU,EAEX,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,UAAU,WAAY,SAAQ,aAAa;IACzC,eAAe;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,KAAK,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAmB9C,oBAAY,qBAAqB;IAC/B,UAAU,IAAA;IACV,SAAS,IAAA;IACT,YAAY,IAAA;IACZ,aAAa,IAAA;IACb,YAAY,IAAA;CACb;AAED,gBAAgB;AAChB,qBAAa,YAAY;IACvB,YAAY,EAAE,UAAU,CAAC;IAEzB,cAAc,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3C,OAAO,EAAE,OAAO,CAAC;IAEjB,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAK;IAEhB,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,yBAAyB,KAAK,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"SignalClient.d.ts","sourceRoot":"","sources":["../../../src/api/SignalClient.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"publishVideo.d.ts","sourceRoot":"","sources":["../../../../src/connectionHelper/checks/publishVideo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,iBAAkB,SAAQ,OAAO;IAC5C,IAAI,WAAW,IAAI,MAAM,CAExB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCxB,aAAa,CAAC,KAAK,EAAE,gBAAgB;
|
1
|
+
{"version":3,"file":"publishVideo.d.ts","sourceRoot":"","sources":["../../../../src/connectionHelper/checks/publishVideo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,qBAAa,iBAAkB,SAAQ,OAAO;IAC5C,IAAI,WAAW,IAAI,MAAM,CAExB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCxB,aAAa,CAAC,KAAK,EAAE,gBAAgB;CAgD5C"}
|
@@ -20,13 +20,14 @@ export default class PCTransport extends EventEmitter {
|
|
20
20
|
private log;
|
21
21
|
private loggerOptions;
|
22
22
|
private ddExtID;
|
23
|
+
private latestOfferId;
|
23
24
|
pendingCandidates: RTCIceCandidateInit[];
|
24
25
|
restartingIce: boolean;
|
25
26
|
renegotiate: boolean;
|
26
27
|
trackBitrates: TrackBitrateInfo[];
|
27
28
|
remoteStereoMids: string[];
|
28
29
|
remoteNackMids: string[];
|
29
|
-
onOffer?: (offer: RTCSessionDescriptionInit) => void;
|
30
|
+
onOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
30
31
|
onIceCandidate?: (candidate: RTCIceCandidate) => void;
|
31
32
|
onIceCandidateError?: (ev: Event) => void;
|
32
33
|
onConnectionStateChange?: (state: RTCPeerConnectionState) => void;
|
@@ -39,7 +40,7 @@ export default class PCTransport extends EventEmitter {
|
|
39
40
|
private get logContext();
|
40
41
|
get isICEConnected(): boolean;
|
41
42
|
addIceCandidate(candidate: RTCIceCandidateInit): Promise<void>;
|
42
|
-
setRemoteDescription(sd: RTCSessionDescriptionInit): Promise<
|
43
|
+
setRemoteDescription(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
43
44
|
negotiate: {
|
44
45
|
(this: unknown, ...args: [onError?: ((e: Error) => void) | undefined] & any[]): Promise<Promise<void>>;
|
45
46
|
cancel: (reason?: any) => void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PCTransport.d.ts","sourceRoot":"","sources":["../../../src/room/PCTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,gBAAgB;AAChB,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAYD,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAEX,gBAAgB;AAChB,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;IACnD,OAAO,CAAC,GAAG,CAA2B;IAEtC,OAAO,KAAK,EAAE,GAKb;IAED,OAAO,CAAC,MAAM,CAAC,CAAmB;IAElC,OAAO,CAAC,GAAG,CAAO;IAElB,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,OAAO,CAAK;IAEpB,iBAAiB,EAAE,mBAAmB,EAAE,CAAM;IAE9C,aAAa,EAAE,OAAO,CAAS;IAE/B,WAAW,EAAE,OAAO,CAAS;IAE7B,aAAa,EAAE,gBAAgB,EAAE,CAAM;IAEvC,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAEhC,cAAc,EAAE,MAAM,EAAE,CAAM;IAE9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"PCTransport.d.ts","sourceRoot":"","sources":["../../../src/room/PCTransport.ts"],"names":[],"mappings":"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"}
|
@@ -20,7 +20,7 @@ export declare class PCTransportManager {
|
|
20
20
|
onIceCandidate?: (ev: RTCIceCandidate, target: SignalTarget) => void;
|
21
21
|
onDataChannel?: (ev: RTCDataChannelEvent) => void;
|
22
22
|
onTrack?: (ev: RTCTrackEvent) => void;
|
23
|
-
onPublisherOffer?: (offer: RTCSessionDescriptionInit) => void;
|
23
|
+
onPublisherOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
24
24
|
private isPublisherConnectionRequired;
|
25
25
|
private isSubscriberConnectionRequired;
|
26
26
|
private state;
|
@@ -33,12 +33,12 @@ export declare class PCTransportManager {
|
|
33
33
|
requirePublisher(require?: boolean): void;
|
34
34
|
requireSubscriber(require?: boolean): void;
|
35
35
|
createAndSendPublisherOffer(options?: RTCOfferOptions): Promise<void>;
|
36
|
-
setPublisherAnswer(sd: RTCSessionDescriptionInit): Promise<
|
36
|
+
setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
37
37
|
removeTrack(sender: RTCRtpSender): void | undefined;
|
38
38
|
close(): Promise<void>;
|
39
39
|
triggerIceRestart(): Promise<void>;
|
40
40
|
addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
41
|
-
createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit): Promise<RTCSessionDescriptionInit>;
|
41
|
+
createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise<RTCSessionDescriptionInit | undefined>;
|
42
42
|
updateConfiguration(config: RTCConfiguration, iceRestart?: boolean): void;
|
43
43
|
ensurePCTransportConnection(abortController?: AbortController, timeout?: number): Promise<void>;
|
44
44
|
negotiate(abortController: AbortController): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"PCTransportManager.d.ts","sourceRoot":"","sources":["../../../src/room/PCTransportManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,WAAyB,MAAM,eAAe,CAAC;AAItD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,oBAAY,gBAAgB;IAC1B,GAAG,IAAA;IACH,UAAU,IAAA;IACV,SAAS,IAAA;IACT,MAAM,IAAA;IACN,OAAO,IAAA;IACP,MAAM,IAAA;CACP;AAED,qBAAa,kBAAkB;IACtB,SAAS,EAAE,WAAW,CAAC;IAEvB,UAAU,EAAE,WAAW,CAAC;IAExB,qBAAqB,EAAE,MAAM,CAAmD;IAEvF,IAAW,cAAc,YAExB;IAED,IAAW,eAAe,YAEzB;IAED,IAAW,YAAY,qBAEtB;IAEM,aAAa,CAAC,EAAE,CACrB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,sBAAsB,KAC7B,IAAI,CAAC;IAEH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAErE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAElD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAC;IAEtC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"PCTransportManager.d.ts","sourceRoot":"","sources":["../../../src/room/PCTransportManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,WAAyB,MAAM,eAAe,CAAC;AAItD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,oBAAY,gBAAgB;IAC1B,GAAG,IAAA;IACH,UAAU,IAAA;IACV,SAAS,IAAA;IACT,MAAM,IAAA;IACN,OAAO,IAAA;IACP,MAAM,IAAA;CACP;AAED,qBAAa,kBAAkB;IACtB,SAAS,EAAE,WAAW,CAAC;IAEvB,UAAU,EAAE,WAAW,CAAC;IAExB,qBAAqB,EAAE,MAAM,CAAmD;IAEvF,IAAW,cAAc,YAExB;IAED,IAAW,eAAe,YAEzB;IAED,IAAW,YAAY,qBAEtB;IAEM,aAAa,CAAC,EAAE,CACrB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,sBAAsB,KAC7B,IAAI,CAAC;IAEH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAErE,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAElD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAC;IAEtC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEtF,OAAO,CAAC,6BAA6B,CAAU;IAE/C,OAAO,CAAC,8BAA8B,CAAU;IAEhD,OAAO,CAAC,KAAK,CAAmB;IAEhC,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,eAAe,CAAQ;IAE/B,OAAO,CAAC,GAAG,CAAO;IAElB,OAAO,CAAC,aAAa,CAAgB;gBAGnC,SAAS,EAAE,gBAAgB,EAC3B,iBAAiB,EAAE,OAAO,EAC1B,aAAa,EAAE,aAAa;IAuC9B,OAAO,KAAK,UAAU,GAIrB;IAED,gBAAgB,CAAC,OAAO,UAAO;IAK/B,iBAAiB,CAAC,OAAO,UAAO;IAKhC,2BAA2B,CAAC,OAAO,CAAC,EAAE,eAAe;IAIrD,kBAAkB,CAAC,EAAE,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM;IAIjE,WAAW,CAAC,MAAM,EAAE,YAAY;IAI1B,KAAK;IAkBL,iBAAiB;IAQjB,eAAe,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,YAAY;IAQpE,+BAA+B,CAAC,EAAE,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM;IAsBpF,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,OAAO;IAQ5D,2BAA2B,CAAC,eAAe,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM;IAqB/E,SAAS,CAAC,eAAe,EAAE,eAAe;IA6BhD,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB;IAIvF,iBAAiB,CAAC,KAAK,EAAE,gBAAgB;IAIzC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,kBAAkB;IAI7E;;OAEG;IACH,mBAAmB,CAAC,MAAM,CAAC,EAAE,YAAY;IASzC,OAAO,KAAK,kBAAkB,GAS7B;IAED,OAAO,CAAC,WAAW,CA+BjB;YAEY,wBAAwB;CAsDvC"}
|
@@ -27,6 +27,10 @@ export default class RTCEngine extends RTCEngine_base {
|
|
27
27
|
* @internal
|
28
28
|
*/
|
29
29
|
latestJoinResponse?: JoinResponse;
|
30
|
+
/**
|
31
|
+
* @internal
|
32
|
+
*/
|
33
|
+
latestRemoteOfferId: number;
|
30
34
|
get isClosed(): boolean;
|
31
35
|
get pendingReconnect(): boolean;
|
32
36
|
private lossyDC?;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"RTCEngine.d.ts","sourceRoot":"","sources":["../../../src/room/RTCEngine.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EAGpB,KAAK,uBAAuB,EAG5B,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,KAAK,YAAY,EAGjB,eAAe,EAGf,eAAe,EACf,IAAI,IAAI,SAAS,EACjB,iBAAiB,EAIjB,WAAW,EACX,KAAK,iBAAiB,EACtB,uBAAuB,EACvB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EAEzB,SAAS,EAET,wBAAwB,EACxB,aAAa,EAGd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EACL,YAAY,EAGb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,WAAyB,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAoB,MAAM,sBAAsB,CAAC;AAE5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAU7D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAC;AACvE,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,sBAAsB,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;8BA2Bf,UAAU,iBAAiB,CAAC,oBAAoB,CAAC;AADzG,gBAAgB;AAChB,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,cAAmE;
|
1
|
+
{"version":3,"file":"RTCEngine.d.ts","sourceRoot":"","sources":["../../../src/room/RTCEngine.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"LocalVideoTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/LocalVideoTrack.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,eAAe,EACf,iBAAiB,EACjB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
1
|
+
{"version":3,"file":"LocalVideoTrack.d.ts","sourceRoot":"","sources":["../../../../src/room/track/LocalVideoTrack.ts"],"names":[],"mappings":"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"}
|
@@ -34,8 +34,8 @@ export declare class SignalClient {
|
|
34
34
|
/** simulate signaling latency by delaying messages */
|
35
35
|
signalLatency?: number;
|
36
36
|
onClose?: (reason: string) => void;
|
37
|
-
onAnswer?: (sd: RTCSessionDescriptionInit) => void;
|
38
|
-
onOffer?: (sd: RTCSessionDescriptionInit) => void;
|
37
|
+
onAnswer?: (sd: RTCSessionDescriptionInit, offerId: number) => void;
|
38
|
+
onOffer?: (sd: RTCSessionDescriptionInit, offerId: number) => void;
|
39
39
|
onTrickle?: (sd: RTCIceCandidateInit, target: SignalTarget) => void;
|
40
40
|
onParticipantUpdate?: (updates: ParticipantInfo[]) => void;
|
41
41
|
onLocalTrackPublished?: (res: TrackPublishedResponse) => void;
|
@@ -79,8 +79,8 @@ export declare class SignalClient {
|
|
79
79
|
/** @internal */
|
80
80
|
resetCallbacks: () => void;
|
81
81
|
close(updateState?: boolean): Promise<void>;
|
82
|
-
sendOffer(offer: RTCSessionDescriptionInit): void;
|
83
|
-
sendAnswer(answer: RTCSessionDescriptionInit): Promise<void>;
|
82
|
+
sendOffer(offer: RTCSessionDescriptionInit, offerId: number): void;
|
83
|
+
sendAnswer(answer: RTCSessionDescriptionInit, offerId: number): Promise<void>;
|
84
84
|
sendIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
85
85
|
sendMuteTrack(trackSid: string, muted: boolean): Promise<void>;
|
86
86
|
sendAddTrack(req: AddTrackRequest): Promise<void>;
|
@@ -114,6 +114,6 @@ export declare class SignalClient {
|
|
114
114
|
private startPingInterval;
|
115
115
|
private clearPingInterval;
|
116
116
|
}
|
117
|
-
export declare function toProtoSessionDescription(rsd: RTCSessionDescription | RTCSessionDescriptionInit): SessionDescription;
|
117
|
+
export declare function toProtoSessionDescription(rsd: RTCSessionDescription | RTCSessionDescriptionInit, id?: number): SessionDescription;
|
118
118
|
export {};
|
119
119
|
//# sourceMappingURL=SignalClient.d.ts.map
|
@@ -20,13 +20,14 @@ export default class PCTransport extends EventEmitter {
|
|
20
20
|
private log;
|
21
21
|
private loggerOptions;
|
22
22
|
private ddExtID;
|
23
|
+
private latestOfferId;
|
23
24
|
pendingCandidates: RTCIceCandidateInit[];
|
24
25
|
restartingIce: boolean;
|
25
26
|
renegotiate: boolean;
|
26
27
|
trackBitrates: TrackBitrateInfo[];
|
27
28
|
remoteStereoMids: string[];
|
28
29
|
remoteNackMids: string[];
|
29
|
-
onOffer?: (offer: RTCSessionDescriptionInit) => void;
|
30
|
+
onOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
30
31
|
onIceCandidate?: (candidate: RTCIceCandidate) => void;
|
31
32
|
onIceCandidateError?: (ev: Event) => void;
|
32
33
|
onConnectionStateChange?: (state: RTCPeerConnectionState) => void;
|
@@ -39,7 +40,7 @@ export default class PCTransport extends EventEmitter {
|
|
39
40
|
private get logContext();
|
40
41
|
get isICEConnected(): boolean;
|
41
42
|
addIceCandidate(candidate: RTCIceCandidateInit): Promise<void>;
|
42
|
-
setRemoteDescription(sd: RTCSessionDescriptionInit): Promise<
|
43
|
+
setRemoteDescription(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
43
44
|
negotiate: {
|
44
45
|
(this: unknown, ...args: [
|
45
46
|
onError?: ((e: Error) => void) | undefined
|
@@ -20,7 +20,7 @@ export declare class PCTransportManager {
|
|
20
20
|
onIceCandidate?: (ev: RTCIceCandidate, target: SignalTarget) => void;
|
21
21
|
onDataChannel?: (ev: RTCDataChannelEvent) => void;
|
22
22
|
onTrack?: (ev: RTCTrackEvent) => void;
|
23
|
-
onPublisherOffer?: (offer: RTCSessionDescriptionInit) => void;
|
23
|
+
onPublisherOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
24
24
|
private isPublisherConnectionRequired;
|
25
25
|
private isSubscriberConnectionRequired;
|
26
26
|
private state;
|
@@ -33,12 +33,12 @@ export declare class PCTransportManager {
|
|
33
33
|
requirePublisher(require?: boolean): void;
|
34
34
|
requireSubscriber(require?: boolean): void;
|
35
35
|
createAndSendPublisherOffer(options?: RTCOfferOptions): Promise<void>;
|
36
|
-
setPublisherAnswer(sd: RTCSessionDescriptionInit): Promise<
|
36
|
+
setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
|
37
37
|
removeTrack(sender: RTCRtpSender): void | undefined;
|
38
38
|
close(): Promise<void>;
|
39
39
|
triggerIceRestart(): Promise<void>;
|
40
40
|
addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
|
41
|
-
createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit): Promise<RTCSessionDescriptionInit>;
|
41
|
+
createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise<RTCSessionDescriptionInit | undefined>;
|
42
42
|
updateConfiguration(config: RTCConfiguration, iceRestart?: boolean): void;
|
43
43
|
ensurePCTransportConnection(abortController?: AbortController, timeout?: number): Promise<void>;
|
44
44
|
negotiate(abortController: AbortController): Promise<void>;
|
@@ -28,6 +28,10 @@ export default class RTCEngine extends RTCEngine_base {
|
|
28
28
|
* @internal
|
29
29
|
*/
|
30
30
|
latestJoinResponse?: JoinResponse;
|
31
|
+
/**
|
32
|
+
* @internal
|
33
|
+
*/
|
34
|
+
latestRemoteOfferId: number;
|
31
35
|
get isClosed(): boolean;
|
32
36
|
get pendingReconnect(): boolean;
|
33
37
|
private lossyDC?;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "livekit-client",
|
3
|
-
"version": "2.13.
|
3
|
+
"version": "2.13.7",
|
4
4
|
"description": "JavaScript/TypeScript client SDK for LiveKit",
|
5
5
|
"main": "./dist/livekit-client.umd.js",
|
6
6
|
"unpkg": "./dist/livekit-client.umd.js",
|
@@ -37,7 +37,7 @@
|
|
37
37
|
"license": "Apache-2.0",
|
38
38
|
"dependencies": {
|
39
39
|
"@livekit/mutex": "1.1.1",
|
40
|
-
"@livekit/protocol": "1.39.
|
40
|
+
"@livekit/protocol": "1.39.2",
|
41
41
|
"events": "^3.3.0",
|
42
42
|
"loglevel": "^1.9.2",
|
43
43
|
"sdp-transform": "^2.15.0",
|
@@ -50,13 +50,13 @@
|
|
50
50
|
"@types/dom-mediacapture-record": "^1"
|
51
51
|
},
|
52
52
|
"devDependencies": {
|
53
|
-
"@babel/core": "7.27.
|
53
|
+
"@babel/core": "7.27.4",
|
54
54
|
"@babel/preset-env": "7.27.2",
|
55
55
|
"@bufbuild/protoc-gen-es": "^1.10.0",
|
56
56
|
"@changesets/cli": "2.29.4",
|
57
57
|
"@livekit/changesets-changelog-github": "^0.0.4",
|
58
58
|
"@rollup/plugin-babel": "6.0.4",
|
59
|
-
"@rollup/plugin-commonjs": "28.0.
|
59
|
+
"@rollup/plugin-commonjs": "28.0.5",
|
60
60
|
"@rollup/plugin-json": "6.1.0",
|
61
61
|
"@rollup/plugin-node-resolve": "16.0.1",
|
62
62
|
"@rollup/plugin-terser": "^0.4.4",
|
@@ -64,25 +64,25 @@
|
|
64
64
|
"@size-limit/webpack": "^11.2.0",
|
65
65
|
"@trivago/prettier-plugin-sort-imports": "^5.0.0",
|
66
66
|
"@types/events": "^3.0.3",
|
67
|
-
"@types/sdp-transform": "2.4.
|
67
|
+
"@types/sdp-transform": "2.4.10",
|
68
68
|
"@types/ua-parser-js": "0.7.39",
|
69
69
|
"@typescript-eslint/eslint-plugin": "7.18.0",
|
70
70
|
"@typescript-eslint/parser": "7.18.0",
|
71
71
|
"downlevel-dts": "^0.11.0",
|
72
72
|
"eslint": "8.57.1",
|
73
73
|
"eslint-config-airbnb-typescript": "18.0.0",
|
74
|
-
"eslint-config-prettier": "
|
74
|
+
"eslint-config-prettier": "10.1.5",
|
75
75
|
"eslint-plugin-ecmascript-compat": "^3.2.1",
|
76
76
|
"eslint-plugin-import": "2.31.0",
|
77
77
|
"gh-pages": "6.3.0",
|
78
78
|
"happy-dom": "^17.2.0",
|
79
79
|
"jsdom": "^26.1.0",
|
80
80
|
"prettier": "^3.4.2",
|
81
|
-
"rollup": "4.
|
81
|
+
"rollup": "4.43.0",
|
82
82
|
"rollup-plugin-delete": "^2.1.0",
|
83
83
|
"rollup-plugin-typescript2": "0.36.0",
|
84
84
|
"size-limit": "^11.2.0",
|
85
|
-
"typedoc": "0.28.
|
85
|
+
"typedoc": "0.28.5",
|
86
86
|
"typedoc-plugin-no-inherit": "1.6.1",
|
87
87
|
"typescript": "5.8.3",
|
88
88
|
"vite": "5.4.19",
|
package/src/api/SignalClient.ts
CHANGED
@@ -110,9 +110,9 @@ export class SignalClient {
|
|
110
110
|
|
111
111
|
onClose?: (reason: string) => void;
|
112
112
|
|
113
|
-
onAnswer?: (sd: RTCSessionDescriptionInit) => void;
|
113
|
+
onAnswer?: (sd: RTCSessionDescriptionInit, offerId: number) => void;
|
114
114
|
|
115
|
-
onOffer?: (sd: RTCSessionDescriptionInit) => void;
|
115
|
+
onOffer?: (sd: RTCSessionDescriptionInit, offerId: number) => void;
|
116
116
|
|
117
117
|
// when a new ICE candidate is made available
|
118
118
|
onTrickle?: (sd: RTCIceCandidateInit, target: SignalTarget) => void;
|
@@ -246,16 +246,13 @@ export class SignalClient {
|
|
246
246
|
// clear ping interval and restart it once reconnected
|
247
247
|
this.clearPingInterval();
|
248
248
|
|
249
|
-
const res = await this.connect(url, token, {
|
249
|
+
const res = (await this.connect(url, token, {
|
250
250
|
...this.options,
|
251
251
|
reconnect: true,
|
252
252
|
sid,
|
253
253
|
reconnectReason: reason,
|
254
|
-
});
|
255
|
-
|
256
|
-
return res;
|
257
|
-
}
|
258
|
-
return;
|
254
|
+
})) as ReconnectResponse;
|
255
|
+
return res;
|
259
256
|
}
|
260
257
|
|
261
258
|
private connect(
|
@@ -509,20 +506,20 @@ export class SignalClient {
|
|
509
506
|
}
|
510
507
|
|
511
508
|
// initial offer after joining
|
512
|
-
sendOffer(offer: RTCSessionDescriptionInit) {
|
509
|
+
sendOffer(offer: RTCSessionDescriptionInit, offerId: number) {
|
513
510
|
this.log.debug('sending offer', { ...this.logContext, offerSdp: offer.sdp });
|
514
511
|
this.sendRequest({
|
515
512
|
case: 'offer',
|
516
|
-
value: toProtoSessionDescription(offer),
|
513
|
+
value: toProtoSessionDescription(offer, offerId),
|
517
514
|
});
|
518
515
|
}
|
519
516
|
|
520
517
|
// answer a server-initiated offer
|
521
|
-
sendAnswer(answer: RTCSessionDescriptionInit) {
|
518
|
+
sendAnswer(answer: RTCSessionDescriptionInit, offerId: number) {
|
522
519
|
this.log.debug('sending answer', { ...this.logContext, answerSdp: answer.sdp });
|
523
520
|
return this.sendRequest({
|
524
521
|
case: 'answer',
|
525
|
-
value: toProtoSessionDescription(answer),
|
522
|
+
value: toProtoSessionDescription(answer, offerId),
|
526
523
|
});
|
527
524
|
}
|
528
525
|
|
@@ -703,12 +700,12 @@ export class SignalClient {
|
|
703
700
|
if (msg.case === 'answer') {
|
704
701
|
const sd = fromProtoSessionDescription(msg.value);
|
705
702
|
if (this.onAnswer) {
|
706
|
-
this.onAnswer(sd);
|
703
|
+
this.onAnswer(sd, msg.value.id);
|
707
704
|
}
|
708
705
|
} else if (msg.case === 'offer') {
|
709
706
|
const sd = fromProtoSessionDescription(msg.value);
|
710
707
|
if (this.onOffer) {
|
711
|
-
this.onOffer(sd);
|
708
|
+
this.onOffer(sd, msg.value.id);
|
712
709
|
}
|
713
710
|
} else if (msg.case === 'trickle') {
|
714
711
|
const candidate: RTCIceCandidateInit = JSON.parse(msg.value.candidateInit!);
|
@@ -891,10 +888,12 @@ function fromProtoSessionDescription(sd: SessionDescription): RTCSessionDescript
|
|
891
888
|
|
892
889
|
export function toProtoSessionDescription(
|
893
890
|
rsd: RTCSessionDescription | RTCSessionDescriptionInit,
|
891
|
+
id?: number,
|
894
892
|
): SessionDescription {
|
895
893
|
const sd = new SessionDescription({
|
896
894
|
sdp: rsd.sdp!,
|
897
895
|
type: rsd.type!,
|
896
|
+
id,
|
898
897
|
});
|
899
898
|
return sd;
|
900
899
|
}
|
package/src/room/PCTransport.ts
CHANGED
@@ -50,6 +50,8 @@ export default class PCTransport extends EventEmitter {
|
|
50
50
|
|
51
51
|
private ddExtID = 0;
|
52
52
|
|
53
|
+
private latestOfferId: number = 0;
|
54
|
+
|
53
55
|
pendingCandidates: RTCIceCandidateInit[] = [];
|
54
56
|
|
55
57
|
restartingIce: boolean = false;
|
@@ -62,7 +64,7 @@ export default class PCTransport extends EventEmitter {
|
|
62
64
|
|
63
65
|
remoteNackMids: string[] = [];
|
64
66
|
|
65
|
-
onOffer?: (offer: RTCSessionDescriptionInit) => void;
|
67
|
+
onOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
66
68
|
|
67
69
|
onIceCandidate?: (candidate: RTCIceCandidate) => void;
|
68
70
|
|
@@ -137,7 +139,20 @@ export default class PCTransport extends EventEmitter {
|
|
137
139
|
this.pendingCandidates.push(candidate);
|
138
140
|
}
|
139
141
|
|
140
|
-
async setRemoteDescription(sd: RTCSessionDescriptionInit): Promise<
|
142
|
+
async setRemoteDescription(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean> {
|
143
|
+
if (
|
144
|
+
sd.type === 'answer' &&
|
145
|
+
this.latestOfferId > 0 &&
|
146
|
+
offerId > 0 &&
|
147
|
+
offerId !== this.latestOfferId
|
148
|
+
) {
|
149
|
+
this.log.warn('ignoring answer for old offer', {
|
150
|
+
...this.logContext,
|
151
|
+
offerId,
|
152
|
+
latestOfferId: this.latestOfferId,
|
153
|
+
});
|
154
|
+
return false;
|
155
|
+
}
|
141
156
|
let mungedSDP: string | undefined = undefined;
|
142
157
|
if (sd.type === 'offer') {
|
143
158
|
let { stereoMids, nackMids } = extractStereoAndNackAudioFromOffer(sd);
|
@@ -218,6 +233,7 @@ export default class PCTransport extends EventEmitter {
|
|
218
233
|
});
|
219
234
|
}
|
220
235
|
}
|
236
|
+
return true;
|
221
237
|
}
|
222
238
|
|
223
239
|
// debounced negotiate interface
|
@@ -235,6 +251,9 @@ export default class PCTransport extends EventEmitter {
|
|
235
251
|
}, debounceInterval);
|
236
252
|
|
237
253
|
async createAndSendOffer(options?: RTCOfferOptions) {
|
254
|
+
// increase the offer id at the start to ensure the offer is always > 0 so that we can use 0 as a default value for legacy behavior
|
255
|
+
const offerId = this.latestOfferId + 1;
|
256
|
+
this.latestOfferId = offerId;
|
238
257
|
if (this.onOffer === undefined) {
|
239
258
|
return;
|
240
259
|
}
|
@@ -317,9 +336,16 @@ export default class PCTransport extends EventEmitter {
|
|
317
336
|
});
|
318
337
|
}
|
319
338
|
});
|
320
|
-
|
339
|
+
if (this.latestOfferId > offerId) {
|
340
|
+
this.log.warn('latestOfferId mismatch', {
|
341
|
+
...this.logContext,
|
342
|
+
latestOfferId: this.latestOfferId,
|
343
|
+
offerId,
|
344
|
+
});
|
345
|
+
return;
|
346
|
+
}
|
321
347
|
await this.setMungedSDP(offer, write(sdpParsed));
|
322
|
-
this.onOffer(offer);
|
348
|
+
this.onOffer(offer, this.latestOfferId);
|
323
349
|
}
|
324
350
|
|
325
351
|
async createAndSetAnswer(): Promise<RTCSessionDescriptionInit> {
|
@@ -48,7 +48,7 @@ export class PCTransportManager {
|
|
48
48
|
|
49
49
|
public onTrack?: (ev: RTCTrackEvent) => void;
|
50
50
|
|
51
|
-
public onPublisherOffer?: (offer: RTCSessionDescriptionInit) => void;
|
51
|
+
public onPublisherOffer?: (offer: RTCSessionDescriptionInit, offerId: number) => void;
|
52
52
|
|
53
53
|
private isPublisherConnectionRequired: boolean;
|
54
54
|
|
@@ -96,8 +96,8 @@ export class PCTransportManager {
|
|
96
96
|
this.subscriber.onTrack = (ev) => {
|
97
97
|
this.onTrack?.(ev);
|
98
98
|
};
|
99
|
-
this.publisher.onOffer = (offer) => {
|
100
|
-
this.onPublisherOffer?.(offer);
|
99
|
+
this.publisher.onOffer = (offer, offerId) => {
|
100
|
+
this.onPublisherOffer?.(offer, offerId);
|
101
101
|
};
|
102
102
|
|
103
103
|
this.state = PCTransportState.NEW;
|
@@ -126,8 +126,8 @@ export class PCTransportManager {
|
|
126
126
|
return this.publisher.createAndSendOffer(options);
|
127
127
|
}
|
128
128
|
|
129
|
-
setPublisherAnswer(sd: RTCSessionDescriptionInit) {
|
130
|
-
return this.publisher.setRemoteDescription(sd);
|
129
|
+
setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number) {
|
130
|
+
return this.publisher.setRemoteDescription(sd, offerId);
|
131
131
|
}
|
132
132
|
|
133
133
|
removeTrack(sender: RTCRtpSender) {
|
@@ -168,7 +168,7 @@ export class PCTransportManager {
|
|
168
168
|
}
|
169
169
|
}
|
170
170
|
|
171
|
-
async createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit) {
|
171
|
+
async createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number) {
|
172
172
|
this.log.debug('received server offer', {
|
173
173
|
...this.logContext,
|
174
174
|
RTCSdpType: sd.type,
|
@@ -177,7 +177,10 @@ export class PCTransportManager {
|
|
177
177
|
});
|
178
178
|
const unlock = await this.remoteOfferLock.lock();
|
179
179
|
try {
|
180
|
-
await this.subscriber.setRemoteDescription(sd);
|
180
|
+
const success = await this.subscriber.setRemoteDescription(sd, offerId);
|
181
|
+
if (!success) {
|
182
|
+
return undefined;
|
183
|
+
}
|
181
184
|
|
182
185
|
// answer the offer
|
183
186
|
const answer = await this.subscriber.createAndSetAnswer();
|
package/src/room/RTCEngine.ts
CHANGED
@@ -111,6 +111,11 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
|
|
111
111
|
*/
|
112
112
|
latestJoinResponse?: JoinResponse;
|
113
113
|
|
114
|
+
/**
|
115
|
+
* @internal
|
116
|
+
*/
|
117
|
+
latestRemoteOfferId: number = 0;
|
118
|
+
|
114
119
|
get isClosed() {
|
115
120
|
return this._isClosed;
|
116
121
|
}
|
@@ -420,8 +425,8 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
|
|
420
425
|
this.client.sendIceCandidate(candidate, target);
|
421
426
|
};
|
422
427
|
|
423
|
-
this.pcManager.onPublisherOffer = (offer) => {
|
424
|
-
this.client.sendOffer(offer);
|
428
|
+
this.pcManager.onPublisherOffer = (offer, offerId) => {
|
429
|
+
this.client.sendOffer(offer, offerId);
|
425
430
|
};
|
426
431
|
|
427
432
|
this.pcManager.onDataChannel = this.handleDataChannel;
|
@@ -476,12 +481,12 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
|
|
476
481
|
|
477
482
|
private setupSignalClientCallbacks() {
|
478
483
|
// configure signaling client
|
479
|
-
this.client.onAnswer = async (sd) => {
|
484
|
+
this.client.onAnswer = async (sd, offerId) => {
|
480
485
|
if (!this.pcManager) {
|
481
486
|
return;
|
482
487
|
}
|
483
488
|
this.log.debug('received server answer', { ...this.logContext, RTCSdpType: sd.type });
|
484
|
-
await this.pcManager.setPublisherAnswer(sd);
|
489
|
+
await this.pcManager.setPublisherAnswer(sd, offerId);
|
485
490
|
};
|
486
491
|
|
487
492
|
// add candidate on trickle
|
@@ -494,12 +499,15 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
|
|
494
499
|
};
|
495
500
|
|
496
501
|
// when server creates an offer for the client
|
497
|
-
this.client.onOffer = async (sd) => {
|
502
|
+
this.client.onOffer = async (sd, offerId) => {
|
503
|
+
this.latestRemoteOfferId = offerId;
|
498
504
|
if (!this.pcManager) {
|
499
505
|
return;
|
500
506
|
}
|
501
|
-
const answer = await this.pcManager.createSubscriberAnswerFromOffer(sd);
|
502
|
-
|
507
|
+
const answer = await this.pcManager.createSubscriberAnswerFromOffer(sd, offerId);
|
508
|
+
if (answer) {
|
509
|
+
this.client.sendAnswer(answer, offerId);
|
510
|
+
}
|
503
511
|
};
|
504
512
|
|
505
513
|
this.client.onLocalTrackPublished = (res: TrackPublishedResponse) => {
|