Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/spotty-pumas-jog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'livekit-client': patch
---

Moves "connected to Livekit Server" log within RTCEngine.join so it shows up for reconnects as well as connects
37 changes: 28 additions & 9 deletions src/room/RTCEngine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
RoomMovedResponse,
RpcAck,
RpcResponse,
ServerInfo,
SessionDescription,
SignalTarget,
SpeakerInfo,
Expand Down Expand Up @@ -298,7 +299,7 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
abortSignal?: AbortSignal,
/** setting this to true results in dual peer connection mode being used */
useV0Path: boolean = false,
): Promise<JoinResponse> {
): Promise<{ joinResponse: JoinResponse; serverInfo: Partial<ServerInfo> }> {
this._isNewlyCreated = false;
this.url = url;
this.token = token;
Expand Down Expand Up @@ -353,7 +354,23 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
this.registerOnLineListener();
this.clientConfiguration = joinResponse.clientConfiguration;
this.emit(EngineEvent.SignalConnected, joinResponse);
return joinResponse;

let serverInfo: Partial<ServerInfo> | undefined = joinResponse.serverInfo;
if (!serverInfo) {
serverInfo = { version: joinResponse.serverVersion, region: joinResponse.serverRegion };
}
this.log.debug(
`connected to Livekit Server ${Object.entries(serverInfo)
.map(([key, value]) => `${key}: ${value}`)
.join(', ')}`,
{
room: joinResponse.room?.name,
roomSid: joinResponse.room?.sid,
identity: joinResponse.participant?.identity,
},
);

return { joinResponse, serverInfo };
} catch (e) {
if (e instanceof ConnectionError) {
if (e.reason === ConnectionErrorReason.ServerUnreachable) {
Expand Down Expand Up @@ -1212,13 +1229,15 @@ export default class RTCEngine extends (EventEmitter as new () => TypedEventEmit
throw new SignalReconnectError();
}
// in case a regionUrl is passed, the region URL takes precedence
joinResponse = await this.join(
regionUrl ?? this.url,
this.token,
this.signalOpts,
undefined,
!this.options.singlePeerConnection,
);
joinResponse = (
await this.join(
regionUrl ?? this.url,
this.token,
this.signalOpts,
undefined,
!this.options.singlePeerConnection,
)
).joinResponse;
} catch (e) {
if (e instanceof ConnectionError && e.reason === ConnectionErrorReason.NotAllowed) {
throw new UnexpectedConnectionState('could not reconnect, token might be expired');
Expand Down
17 changes: 1 addition & 16 deletions src/room/Room.ts
Original file line number Diff line number Diff line change
Expand Up @@ -895,7 +895,7 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
roomOptions: InternalRoomOptions,
abortController: AbortController,
): Promise<JoinResponse> => {
const joinResponse = await engine.join(
const { joinResponse, serverInfo } = await engine.join(
url,
token,
{
Expand All @@ -910,23 +910,8 @@ class Room extends (EventEmitter as new () => TypedEmitter<RoomEventCallbacks>)
!roomOptions.singlePeerConnection,
);

let serverInfo: Partial<ServerInfo> | undefined = joinResponse.serverInfo;
if (!serverInfo) {
serverInfo = { version: joinResponse.serverVersion, region: joinResponse.serverRegion };
}
this.serverInfo = serverInfo;

this.log.debug(
`connected to Livekit Server ${Object.entries(serverInfo)
.map(([key, value]) => `${key}: ${value}`)
.join(', ')}`,
{
room: joinResponse.room?.name,
roomSid: joinResponse.room?.sid,
identity: joinResponse.participant?.identity,
},
);

if (!serverInfo.version) {
throw new UnsupportedServer('unknown server version');
}
Expand Down
Loading