diff --git a/packages/livekit-rtc/src/room.ts b/packages/livekit-rtc/src/room.ts index 20bdc6e9..2619e9aa 100644 --- a/packages/livekit-rtc/src/room.ts +++ b/packages/livekit-rtc/src/room.ts @@ -16,6 +16,7 @@ import type { ConnectResponse, ConnectionQuality, DataPacketKind, + DisconnectCallback, DisconnectResponse, IceServer, RoomInfo, @@ -149,7 +150,7 @@ export class Room extends (EventEmitter as new () => TypedEmitter return; } - FfiClient.instance.request({ + const res = FfiClient.instance.request({ message: { case: 'disconnect', value: { @@ -158,6 +159,12 @@ export class Room extends (EventEmitter as new () => TypedEmitter }, }); + await FfiClient.instance.waitFor((ev: FfiEvent) => { + return ev.message.case == 'disconnect' && ev.message.value.asyncId == res.asyncId; + }); + + this.connectionState = ConnectionState.CONN_DISCONNECTED; + FfiClient.instance.removeListener(FfiClientEvent.FfiEvent, this.onFfiEvent); this.removeAllListeners(); }