Skip to content

Room

Defined in: client-sdk-js/src/Room.ts:184

A typed wrapper over Node’s EventEmitter.

Extends EventEmitter with declare overrides so that emit, on, off, etc. are type-safe without introducing circular-reference issues that arise when using typed-emitter directly in extends clauses whose event maps reference the class itself.

Runtime behaviour is 100% EventEmitter; this class adds zero runtime code.

new Room(options?): Room;

Defined in: client-sdk-js/src/Room.ts:233

RoomOptions

Room

TypedEmitter.constructor

addListener: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:37

E extends string | number

E

E extends keyof RoomEvents ? RoomEvents[E] : (…args) => void

this

TypedEmitter.addListener


emit: <E>(event, ...args) => boolean;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:17

E extends RoomEvent

E

…Parameters<RoomEvents[E]>

boolean

TypedEmitter.emit


listenerCount: (event) => number;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:57

string | number

number

TypedEmitter.listenerCount


listeners: <E>(event) => E extends keyof RoomEvents ? RoomEvents[E][] : ((...args) => void)[];

Defined in: client-sdk-js/src/utils/typedEmitter.ts:49

E extends string | number

E

E extends keyof RoomEvents ? RoomEvents[E][] : ((…args) => void)[]

TypedEmitter.listeners


off: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:32

E extends string | number

E

E extends keyof RoomEvents ? RoomEvents[E] : (…args) => void

this

TypedEmitter.off


on: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:22

E extends string | number

E

E extends keyof RoomEvents ? RoomEvents[E] : (…args) => void

this

TypedEmitter.on


once: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:27

E extends string | number

E

E extends keyof RoomEvents ? RoomEvents[E] : (…args) => void

this

TypedEmitter.once


rawListeners: <E>(event) => E extends keyof RoomEvents ? RoomEvents[E][] : ((...args) => void)[];

Defined in: client-sdk-js/src/utils/typedEmitter.ts:53

E extends string | number

E

E extends keyof RoomEvents ? RoomEvents[E][] : ((…args) => void)[]

TypedEmitter.rawListeners


removeAllListeners: (event?) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:47

string | number

this

TypedEmitter.removeAllListeners


removeListener: <E>(event, listener) => this;

Defined in: client-sdk-js/src/utils/typedEmitter.ts:42

E extends string | number

E

E extends keyof RoomEvents ? RoomEvents[E] : (…args) => void

this

TypedEmitter.removeListener


static defaultMaxListeners: number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:5

TypedEmitter.defaultMaxListeners

get activeSpeakers(): Participant<TrackPublication>[];

Defined in: client-sdk-js/src/Room.ts:363

List of participants currently speaking, ordered by audio level.

Participant<TrackPublication>[]


get canPlaybackAudio(): boolean;

Defined in: client-sdk-js/src/Room.ts:328

Whether audio can be played back automatically (i.e. no autoplay restriction).

boolean


get canPlaybackVideo(): boolean;

Defined in: client-sdk-js/src/Room.ts:333

Whether video can be played back automatically.

boolean


get groups(): ReadonlyMap<string, GroupInfo>;

Defined in: client-sdk-js/src/Room.ts:285

All active groups (breakout rooms) in this room.

ReadonlyMap<string, GroupInfo>


get isRecording(): boolean;

Defined in: client-sdk-js/src/Room.ts:338

Whether the room is currently being recorded.

boolean


get localParticipant(): LocalParticipant;

Defined in: client-sdk-js/src/Room.ts:269

LocalParticipant


get metadata(): string | undefined;

Defined in: client-sdk-js/src/Room.ts:343

Room-level metadata (set by the server).

string | undefined


get name(): string;

Defined in: client-sdk-js/src/Room.ts:257

string


get numParticipants(): number;

Defined in: client-sdk-js/src/Room.ts:348

Number of participants currently in the room.

number


get numPublishers(): number;

Defined in: client-sdk-js/src/Room.ts:353

Number of participants that are actively publishing tracks.

number


get remoteParticipants(): Map<string, RemoteParticipant>;

Defined in: client-sdk-js/src/Room.ts:273

Map<string, RemoteParticipant>


get rtt(): number;

Defined in: client-sdk-js/src/Room.ts:925

number


get serverInfo(): ServerInfo | undefined;

Defined in: client-sdk-js/src/Room.ts:265

ServerInfo | undefined


get sharedState(): ReadonlyMap<string, string>;

Defined in: client-sdk-js/src/Room.ts:290

Room-level shared state KV (for collaboration features like whiteboard, shared documents).

ReadonlyMap<string, string>


get sid(): string;

Defined in: client-sdk-js/src/Room.ts:261

string


get state(): ConnectionState;

Defined in: client-sdk-js/src/Room.ts:253

ConnectionState

connect(
url,
token?,
options?
): Promise<void>;

Defined in: client-sdk-js/src/Room.ts:501

string

string

Partial<InternalRoomConnectOptions>

Promise<void>


createGroup(name, permissions?): Promise<GroupInfo>;

Defined in: client-sdk-js/src/Room.ts:395

Create a new group (breakout room) within this room. Requires canManageGroups permission.

string

ParticipantPermission

Promise<GroupInfo>


deleteGroup(groupId): Promise<void>;

Defined in: client-sdk-js/src/Room.ts:411

Delete a group. All participants in the group are returned to the main room and their permissions revert to room-level defaults. Requires canManageGroups permission.

string

Promise<void>


disconnect(stopTracks?): Promise<void>;

Defined in: client-sdk-js/src/Room.ts:653

Disconnect from the room.

boolean = true

Whether to stop local tracks after disconnecting. Defaults to true.

Promise<void>


eventNames(): (string | number)[];

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:7

(string | number)[]

TypedEmitter.eventNames


getActiveDevice(kind): string | undefined;

Defined in: client-sdk-js/src/Room.ts:1012

Returns the device ID currently active for a given kind, if known.

MediaDeviceKind

string | undefined


getGroupParticipants(groupId): Participant<TrackPublication>[];

Defined in: client-sdk-js/src/Room.ts:298

Get all participants currently in the specified group. Includes the local participant if they are in the group.

string

Participant<TrackPublication>[]


getMaxListeners(): number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:9

number

TypedEmitter.getMaxListeners


getParticipantByIdentity(identity): RemoteParticipant | undefined;

Defined in: client-sdk-js/src/Room.ts:376

Look up a remote participant by their identity.

string

RemoteParticipant | undefined


getParticipants(): Participant<TrackPublication>[];

Defined in: client-sdk-js/src/Room.ts:314

Get all participants.

Participant<TrackPublication>[]


getTransportStats(): Promise<{
recv?: RTCStatsReport;
send?: RTCStatsReport;
}>;

Defined in: client-sdk-js/src/Room.ts:280

Returns WebRTC stats for the underlying send and receive transports.

Promise<{ recv?: RTCStatsReport; send?: RTCStatsReport; }>


listGroups(): Promise<GroupInfo[]>;

Defined in: client-sdk-js/src/Room.ts:418

List all active groups in this room.

Promise<GroupInfo[]>


pinParticipant(participantSid): Promise<void>;

Defined in: client-sdk-js/src/Room.ts:430

Pin a remote participant so their media tracks are always received, regardless of active speaker rotation. Pinned participants occupy lastN slots with highest priority.

string

Promise<void>


prependListener(type, listener): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:14

string | number

Listener

this

TypedEmitter.prependListener


prependOnceListener(type, listener): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:15

string | number

Listener

this

TypedEmitter.prependOnceListener


registerByteStreamHandler(topic, handler): void;

Defined in: client-sdk-js/src/Room.ts:1062

Register a handler for incoming byte streams on a specific topic.

string

ByteStreamHandler

void


registerRpcMethod(method, handler): void;

Defined in: client-sdk-js/src/Room.ts:1026

Register an RPC method handler. When a remote participant calls performRpc with the given method name, the handler is invoked.

string

Method name to handle.

(data) => Promise<string>

Async function that receives invocation data and returns a string payload.

void


registerTextStreamHandler(topic, handler): void;

Defined in: client-sdk-js/src/Room.ts:1048

Register a handler for incoming text streams on a specific topic.

string

TextStreamHandler

void


setMaxListeners(n): this;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:8

number

this

TypedEmitter.setMaxListeners


startAudio(): Promise<void>;

Defined in: client-sdk-js/src/Room.ts:958

Attempt to start audio playback on all remote audio tracks. Should be called from a user interaction handler when canPlaybackAudio is false.

Promise<void>


startVideo(): Promise<void>;

Defined in: client-sdk-js/src/Room.ts:986

Attempt to start video playback on all remote video tracks. Should be called from a user interaction handler when canPlaybackVideo is false.

Promise<void>


switchActiveDevice(
kind,
deviceId,
exact?
): Promise<void>;

Defined in: client-sdk-js/src/Room.ts:463

Switch the active device for a given kind across all published tracks.

MediaDeviceKind

videoinput, audioinput, or audiooutput.

string

The device ID to switch to.

boolean = true

If true, sets the deviceId constraint to exact. Defaults to true.

Promise<void>


unpinParticipant(participantSid): Promise<void>;

Defined in: client-sdk-js/src/Room.ts:438

Unpin a previously pinned participant. Their media subscription will then be subject to active speaker rotation under lastN rules.

string

Promise<void>


unregisterByteStreamHandler(topic): void;

Defined in: client-sdk-js/src/Room.ts:1069

Unregister a previously registered byte stream handler.

string

void


unregisterRpcMethod(method): void;

Defined in: client-sdk-js/src/Room.ts:1038

Remove a previously registered RPC method handler.

string

void


unregisterTextStreamHandler(topic): void;

Defined in: client-sdk-js/src/Room.ts:1055

Unregister a previously registered text stream handler.

string

void


static getLocalDevices(kind?): Promise<MediaDeviceInfo[]>;

Defined in: client-sdk-js/src/Room.ts:448

Enumerate available media input/output devices.

MediaDeviceKind

Filter by device kind. If omitted, all devices are returned.

Promise<MediaDeviceInfo[]>


static listenerCount(emitter, type): number;

Defined in: client-sdk-js/node_modules/.pnpm/@types+events@3.0.3/node_modules/@types/events/index.d.ts:4

EventEmitter

string | number

number

TypedEmitter.listenerCount