RoomSession
A RoomSession allows you to start and control video sessions.
For example, the following code joins a video session and listens for new members joining:
const roomSession = new SignalWire.Video.RoomSession({
token: "<YourRoomToken>",
rootElement: document.getElementById("myVideoElement"),
});
roomSession.on("member.joined", (e) => {
console.log(`${e.member.name} joined`);
});
roomSession.join();
Obtaining a token
Please refer to the Simple Video Demo guide to learn how to obtain Video Room tokens.
Constructors
constructor
• new RoomSession(opts
)
Creates a new RoomSession. Note that the room will not be joined until join has been called.
Parameters
Name | Type | Description |
---|---|---|
opts | Object | - |
opts.token | string | SignalWire video room token (get one from the REST APIs) |
opts.rootElement? | HTMLElement | HTML element in which to display the video stream. |
opts.applyLocalVideoOverlay? | boolean | Whether to apply the local-overlay on top of your video. Default: true . |
opts.iceServers? | RTCIceServer [] | List of ICE servers. |
opts.localStream? | MediaStream | A custom media stream to use in place of a camera. |
opts.logLevel? | "trace" | "debug" | "info" | "warn" | "error" | "silent" | Logging level. |
opts.speakerId? | string | Id of the speaker device to use for audio output. If undefined, picks a default speaker. |
opts.stopCameraWhileMuted? | boolean | Whether to stop the camera when the member is muted. Default: true . |
opts.stopMicrophoneWhileMuted? | boolean | Whether to stop the microphone when the member is muted. Default: true . |
opts.audio? | boolean | MediaTrackConstraints | Audio constraints to use when joining the room. Default: true . Deprecated: please use the equivalent parameter in join. |
opts.video? | boolean | MediaTrackConstraints | Video constraints to use when joining the room. Default: true . Deprecated: please use the equivalent parameter in join. |
Example
const roomSession = new SignalWire.Video.RoomSession({
token: "<YourRoomToken>",
rootElement: document.getElementById("myVideoElement"),
});
Properties
active
• Readonly
active: boolean
Whether the connection is currently active.
cameraId
• Readonly
cameraId: null
| string
The id of the video device, or null if not available.
cameraLabel
• Readonly
cameraLabel: null
| string
The label of the video device, or null if not available.
deviceList
• Readonly
deviceList: RoomSessionDevice
[]
Contains any additional devices added via addCamera, addMicrophone, or addDevice.
interactivityMode
• Readonly
interactivityMode: "audience"
|"member"
The current interactivity mode (member or audience) for the local member.
Member participants are allowed to transmit their own audio and/or video to the rest of the room (as in a typical video conference), while audience participants can only view and/or listen. See join.
localAudioTrack
• Readonly
localAudioTrack: null
| MediaStreamTrack
Provides access to the local audio MediaStreamTrack.
localStream
• Readonly
localStream: undefined
| MediaStream
Provides access to the local MediaStream.
localVideoTrack
• Readonly
localVideoTrack: null
| MediaStreamTrack
Provides access to the local video MediaStreamTrack.
localOverlay
• Readonly
localOverlay: LocalOverlay
Provides access to the local video overlay. Use this for example to mirror the local video.
memberId
• Readonly
memberId: string
The id of the current member within the room.
microphoneId
• Readonly
microphoneId: null
| string
The id of the audio input device, or null if not available.
microphoneLabel
• Readonly
microphoneLabel: null
| string
The label of the audio input device, or null if not available.
permissions
• Readonly
permissions: string[]
The list of permissions currently available to the local member.
previewUrl
• Optional
Readonly
previewUrl: string
If the Room has been created with the property enable_room_previews
set to true
, this field contains the URL to the room preview.
remoteStream
• Readonly
remoteStream: undefined
| MediaStream
Provides access to the remote MediaStream.
roomId
• Readonly
roomId: string
The unique identifier for the room.
roomSessionId
• Readonly
roomSessionId: string
The unique identifier for the room session.
screenShareList
• Readonly
screenShareList: RoomSessionScreenShare
[]
Contains any local screen shares added to the room via startScreenShare.
Methods
addCamera
▸ addCamera(opts
): Promise<RoomSessionDevice>
- See RoomSessionDevice documentation for more details.
Adds a camera device to the room. Using this method, a user can stream multiple video sources at the same time.
Parameters
Name | Type | Description |
---|---|---|
opts | MediaTrackConstraints & { autoJoin?: boolean } | Specify the constraints for the device. In addition, you can add the autoJoin key to specify whether the device should immediately join the room or joining will be performed manually later. |
Returns
Promise<RoomSessionDevice>
- See RoomSessionDevice documentation for more details.
Permissions
room.self.additional_source
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Adding any of the camera devices to the room (duplicate streams are possible):
await roomSession.addCamera();
Adding a specific camera:
await roomSession.addCamera({
deviceId: "gOtMHwZdoA6wMlAnhbfTmeRgPAsqa7iw1OwgKYtbTLA=",
});
Adding a high-resolution camera, joining it manually:
const roomDev = await roomSession.addCamera({
autoJoin: false,
width: { min: 1280 },
});
await roomDev.join();
addDevice
▸ addDevice(opts
): Promise<RoomSessionDevice>
- See RoomSessionDevice documentation for more details.
Adds a device to the room. Using this method, a user can stream multiple sources at the same time. If you need to add a camera device or a microphone device, you can alternatively use the more specific methods addCamera and addMicrophone.
Parameters
Name | Type | Description |
---|---|---|
opts | Object | Specify the constraints for the device. In addition, you can add the autoJoin key to specify whether the device should immediately join the room or joining will be performed manually later. |
opts.audio? | boolean | MediaTrackConstraints | Audio constraints. |
opts.autoJoin? | boolean | Whether the device should automatically join the room. Default: true . |
opts.video? | boolean | MediaTrackConstraints | Video constraints. |
Returns
Promise<RoomSessionDevice>
- See RoomSessionDevice documentation for more details.
Permissions
room.self.additional_source
You need to specify the permissions when creating the Video Room Token on the server side.
Example
Adding any of the microphone devices to the room (duplicate streams are possible):
await roomSession.addDevice({ audio: true });
addMicrophone
▸ addMicrophone(opts
): Promise<RoomSessionDevice>
- See RoomSessionDevice documentation for more details.
Adds a microphone device to the room. Using this method, a user can stream multiple audio sources at the same time.
Parameters
Name | Type | Description |
---|---|---|
opts | MediaTrackConstraints & { autoJoin?: boolean } | Specify the constraints for the device. In addition, you can add the autoJoin key to specify whether the device should immediately join the room or joining will be performed manually later. |
Returns
Promise<RoomSessionDevice>
- See RoomSessionDevice documentation for more details.
Permissions
room.self.additional_source
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Adding any of the microphone devices to the room (duplicate streams are possible):
await roomSession.addMicrophone();
Adding a specific microphone:
await roomSession.addMicrophone({
deviceId: "PIn/IIDDgBUHzJkhRncv1m85hX1gC67xYIgJvvThB3Q=",
});
Adding a microphone with specific constraints, joining it manually:
const roomDev = await roomSession.addMicrophone({
autoJoin: false,
noiseSuppression: true,
});
await roomDev.join();
audioMute
▸ audioMute(params?
): Promise<void>
Puts the microphone on mute. The other participants will not hear audio from the muted participant anymore. You can use this method to mute either yourself or another participant in the room.
Parameters
Name | Type | Description |
---|---|---|
params? | Object | - |
params.memberId? | string | Id of the member to mute. If omitted, mutes the default device in the local client. |
Returns
Promise<void>
Permissions
room.self.audio_mute
: to mute a local device.room.member.audio_mute
: to mute a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Muting your own microphone:
await roomSession.audioMute();
Muting the microphone of another participant:
const id = "de550c0c-3fac-4efd-b06f-b5b8614b8966"; // you can get this from getMembers()
await roomSession.audioMute({ memberId: id });
audioUnmute
▸ audioUnmute(params?
): Promise<void>
Unmutes the microphone if it had been previously muted. You can use this method to unmute either yourself or another participant in the room.
Parameters
Name | Type | Description |
---|---|---|
params? | Object | - |
params.memberId? | string | Id of the member to unmute. If omitted, unmutes the default device in the local client. |
Returns
Promise<void>
Permissions
room.self.audio_unmute
: to unmute a local device.room.member.audio_unmute
: to unmute a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Unmuting your own microphone:
await roomSession.audioUnmute();
Unmuting the microphone of another participant:
const id = "de550c0c-3fac-4efd-b06f-b5b8614b8966"; // you can get this from getMembers()
await roomSession.audioUnmute({ memberId: id });
createScreenShareObject
▸ createScreenShareObject(opts
): Promise<RoomSessionScreenShare>
- See RoomSessionScreenShare documentation for more details.
⚠️ Deprecated. Use startScreenShare instead.
Adds a screen sharing instance to the room. You can create multiple screen sharing instances and add all of them to the room.
Parameters
Name | Type | Description |
---|---|---|
opts | Object | - |
opts.audio? | boolean | MediaTrackConstraints | Audio constraints to use when joining the room. Default: true . |
opts.autoJoin? | boolean | Whether the screen share object should automatically join the room. |
opts.video? | boolean | MediaTrackConstraints | Video constraints to use when joining the room. Default: true . |
Returns
Promise<RoomSessionScreenShare>
- See RoomSessionScreenShare documentation for more details.
Permissions
room.self.screenshare
You need to specify the permissions when creating the Video Room Token on the server side.
Example
Sharing the screen together with the associated audio:
await roomSession.createScreenShareObject({ audio: true, video: true });
deaf
▸ deaf(params?
): Promise<void>
Mutes the incoming audio. The affected participant will not hear audio from the other participants anymore. You can use this method to make deaf either yourself or another participant in the room.
Note that in addition to making a participant deaf, this will also automatically mute the microphone of the target participant (even if there is no audio_mute
permission). If you want, you can then manually unmute it by calling audioUnmute.
Parameters
Name | Type | Description |
---|---|---|
params? | Object | - |
params.memberId? | string | Id of the member to affect. If omitted, affects the default device in the local client. |
Returns
Promise<void>
Permissions
room.self.deaf
: to make yourself deaf.room.member.deaf
: to make deaf a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Making yourself deaf:
await roomSession.deaf();
Making another participant deaf:
const id = "de550c0c-3fac-4efd-b06f-b5b8614b8966"; // you can get this from getMembers()
await roomSession.deaf({ memberId: id });
deleteMemberMeta
▸ deleteMemberMeta(params
): Promise<void>
Deletes the specified keys from the metadata for the specified member.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId? | string | Id of the member to affect. If omitted, affects the current member. |
params.keys | string[] | The keys to remove. |
Returns
Promise<void>
Permissions
room.set_meta
You need to specify the permissions when creating the Video Room Token on the server side.
Example
roomSession.on("member.updated", (e) => {
// We can set an event listener to log changes to the metadata.
console.log(e.member.meta);
});
await roomSession.setMemberMeta({
memberId: "...",
meta: { foo: "bar", baz: true },
});
// The logger will now print `{ foo: "bar", baz: true }`
await roomSession.deleteMemberMeta({ memberId: "...", keys: ["foo"] });
// The logger will now print `{ baz: true }`
deleteMeta
▸ deleteMeta(keys
): Promise<void>
Deletes the specified keys from the metadata for this RoomSession.
Parameters
Name | Type | Description |
---|---|---|
keys | string[] | The keys to remove. |
Returns
Promise<void>
Permissions
room.set_meta
You need to specify the permissions when creating the Video Room Token on the server side.
Example
roomSession.on("room.updated", (e) => {
// We can set an event listener to log changes to the metadata.
console.log(e.room.meta);
});
await roomSession.setMeta({ foo: "bar", baz: true });
// The logger will now print `{ foo: "bar", baz: true }`
await roomSession.deleteMeta(["foo"]);
// The logger will now print `{ baz: true }`
demote
▸ demote(params
): Promise<void>
Demotes a participant from "member" to "audience". See join and promote.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId? | string | Id of the member to affect. If omitted, affects the current member. |
params.mediaAllowed? | "all" | "audio-only" | "video-only" | Specifies the media that the client will be allowed to receive. An audience participant cannot send any media. |
Returns
Promise<void>
Permissions
room.member.demote
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.demote({
memberId: "de550c0c-3fac-4efd-b06f-b5b8614b8966",
mediaAllowed: "all",
});
destroy
▸ destroy(): void
Destroys the room object. This only destroys the JavaScript object: it has no effect on the server-side room.
Returns
void
getLayouts
▸ getLayouts(): Promise<{ layouts: string[] }>
Returns a list of available layouts for the room.
Returns
Promise<{ layouts: string[] }>
Permissions
room.list_available_layouts
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.getLayouts()
// returns:
{
"layouts": [
"8x8", "2x1", "1x1", "5up", "5x5",
"4x4", "10x10", "2x2", "6x6", "3x3",
"grid-responsive", "highlight-1-responsive"
]
}
getMembers
▸ getMembers(): Promise<{ members: VideoMemberEntity[] }>
Returns a list of members currently in the room.
Returns
Promise<{ members: VideoMemberEntity[] }>
Example
await roomSession.getMembers()
// returns:
{
"members": [
{
"visible": true,
"room_session_id": "fde15619-13c1-4cb5-899d-96afaca2c52a",
"input_volume": 0,
"id": "1bf4d4fb-a3e4-4d46-80a8-3ebfdceb2a60",
"input_sensitivity": 50,
"output_volume": 0,
"audio_muted": false,
"name": "Mark",
"deaf": false,
"video_muted": false,
"room_id": "aae25822-892c-4832-b0b3-34aac3a0e8d1",
"type": "member"
},
{
"visible": true,
"room_session_id": "fde15619-13c1-4cb5-899d-96afaca2c52a",
"input_volume": 0,
"id": "e0c5be44-d6c7-438f-8cda-f859a1a0b1e7",
"input_sensitivity": 50,
"output_volume": 0,
"audio_muted": false,
"name": "David",
"deaf": false,
"video_muted": false,
"room_id": "aae25822-892c-4832-b0b3-34aac3a0e8d1",
"type": "member"
}
]
}
getMemberMeta
▸ getMemberMeta(): Promise<{ meta: Object }>
Returns the metadata assigned to the specified member.
Parameters
Name | Type | Description |
---|---|---|
params? | Object | - |
params.memberId? | string | Id of the member for which to obtain the metadata. If omitted, refers to the current member. |
Returns
Promise<{ meta: Object }>
Example
const { meta } = await roomSession.getMemberMeta();
console.log(meta);
getMeta
▸ getMeta(): Promise<{ meta
: Object
}>
Returns the metadata assigned to this Room Session.
Returns
Promise<{ meta: Object }>
Example
const { meta } = await roomSession.getMeta();
console.log(meta);
getPlaybacks
▸ getPlaybacks(): Promise<{ playbacks: RoomSessionPlayback }>
- See RoomSessionPlayback documentation for more details.
Obtains a list of recordings for the current room session.
Returns
Promise<{ playbacks: RoomSessionPlayback }>
- See RoomSessionPlayback documentation for more details.
Permissions
room.playback
You need to specify the permissions when creating the Video Room Token on the server side.
Example
const pl = await roomSession.getPlaybacks();
if (pl.playbacks.length > 0) {
console.log(rec.playbacks[0].id, recs.playbacks[0].state);
}
getRecordings
▸ getRecordings(): Promise<{ recordings: RoomSessionRecording}>
- See RoomSessionRecording documentation for more details.
Obtains a list of recordings for the current room session. To download the actual mp4 file, please use the REST API.
Returns
Promise<{ recordings: RoomSessionRecording}>
- See RoomSessionRecording documentation for more details.
Permissions
room.recording
You need to specify the permissions when creating the Video Room Token on the server side.
Example
const recs = await roomSession.getRecordings();
if (recs.recordings.length > 0) {
console.log(recs.recordings[0].id, recs.recordings[0].duration);
}
From your server, you can obtain the mp4 file using the REST API:
curl --request GET \
--url https://<yourspace>.signalwire.com/api/video/room_recordings/<recording_id> \
--header 'Accept: application/json' \
--header 'Authorization: Basic <your API token>'
getStreams
▸ getStreams(): Promise<{ streams: RoomSessionStream}>
- See RoomSessionStream documentation for more details.
Obtains a list of active streams for this RoomSession. These are RTMP streams of the audio/video content of this room, which will be sent to an external party (e.g., to YouTube).
Returns
Promise<{ streams: RoomSessionStream}>
- See RoomSessionStream documentation for more details.
Permissions
room.stream
You need to specify the permissions when creating the Video Room Token on the server side.
Example
const s = await roomSession.getStreams();
for (const stream of s.streams) {
console.log(stream.id, stream.url);
}
hangupAll
▸ hangupAll(): Promise<void>
Hangs up the active calls in the RoomSession
and will send a REJECT_ALL
message to the rejected participant(s).
REJECT_ALL message
When a participant is rejected, the causeCode
will be 825
and the cause
will be REJECT_ALL
.
Below is an example of the JSON response when a participant is rejected:
{
"jsonrpc": "2.0",
"id": "cbcbe519-39db-4585-9a89-f0e1fdf036e9",
"result": {
"node_id": "105f2e4f-69a7-4907-bc01-36399fe34bdd@west-us",
"result": {
"jsonrpc": "2.0",
"id": "f4a9c207-e1de-49bb-98bf-e8f4b243c4e0",
"result": {
"callID": "fc456094-6f0e-44b5-8209-7a474cac7ef7",
"message": "CALL ENDED",
"causeCode": 825,
"cause": "REJECT_ALL"
}
},
"code": "200"
}
}
Returns
Promise<void>
Example
await roomSession.hangupAll();
hideVideoMuted
▸ hideVideoMuted(): Promise<void>
⚠️ Deprecated. Use setHideVideoMuted instead.
Do not show muted videos in the room layout.
Returns
Promise<void>
Permissions
room.hide_video_muted
: to set the hand raise priority
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.hideVideoMuted();
join
▸ join(): Promise<RoomSession>
Joins the room session.
Depending on the token you passed to the constructor, the room could be joined as a member or as an audience participant.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.audio? | [MediaStreamConstraints ["audio" ]][media-stream-constraints] | Audio constraints to use when joining the room. Default: true . |
params.video? | [MediaStreamConstraints ["video" ]][media-stream-constraints] | Video constraints to use when joining the room. Default: true . |
params.receiveAudio? | boolean | Whether to receive audio. Default: true . |
params.receiveVideo? | boolean | Whether to receive video. Default: true . |
params.sendAudio? | boolean | Whether to send audio. This is ignored if the token belongs to an audience member, since they cannot send audio. Default: true . |
params.sendVideo? | boolean | Whether to send video. This is ignored if the token belongs to an audience member, since they cannot send video. Default: true . |
Returns
Promise<RoomSession>
leave
▸ leave(): Promise<void>
Leaves the room. This detaches all the locally originating streams from the room.
Returns
Promise<void>
lock
▸ lock(params
): Promise<void>
Locks the room. This prevents new participants from joining the room.
Returns
Promise<void>
Example
await roomSession.lock();
off
▸ off(event
, fn?
)
Remove an event handler.
Parameters
Name | Type | Description |
---|---|---|
event | string | Name of the event. See Events for the list of available events. |
fn? | Function | An event handler which had been previously attached. |
on
▸ on(event
, fn
)
Attaches an event handler to the specified event.
Parameters
Name | Type | Description |
---|---|---|
event | string | Name of the event. See Events for the list of available events. |
fn | Function | An event handler. |
Example
In the below example, we are listening for the call.state
event and logging the current call state to the console.
This means this will be triggered every time the call state changes.
call.on("call.state", (call) => {
console.log("call state changed:", call.state);
});
once
▸ once(event
, fn
)
Attaches an event handler to the specified event. The handler will fire only once.
Parameters
Name | Type | Description |
---|---|---|
event | string | Name of the event. See Events for the list of available events. |
fn | Function | An event handler. |
play
▸ play(params
): Promise<RoomSessionPlayback>
- See RoomSessionPlayback documentation for more details.
Starts a playback in the room. You can use the returned RoomSessionPlayback object to control the playback (e.g., pause, resume, setVolume and stop).
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.url | string | The url (http, https, rtmp, rtmps) of the stream to reproduce. |
params.volume? | number | The audio volume at which to play the stream. Values range from -50 to 50, with a default of 0. |
params.seekPosition? | number | The starting timecode in milliseconds for playback. Defaults to 0 . |
params.positions? | VideoPositions | Positions to assign as soon as the playback starts. You can use the special keyword "self" to refer to the id of the playback. |
params.layout? | string | Layout to change to when the playback starts. |
Returns
Promise<RoomSessionPlayback>
- See RoomSessionPlayback documentation for more details.
Permissions
room.playback
You need to specify the permissions when creating the Video Room Token on the server side.
Example
const playback = await roomSession.play({ url: "rtmp://example.com/foo" });
await playback.stop();
promote
▸ promote(params
): Promise<void>
Promotes a participant from "audience" to "member". See join and demote.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId | string | Id of the audience participant to promote. |
params.joinAudioMuted? | boolean | Force the member's audio to be muted right after the promotion. |
params.joinVideoMuted? | boolean | Force the member's video to be muted right after the promotion. |
params.mediaAllowed? | "all" | "audio-only" | "video-only" | Specifies the media that the client will be allowed to send. A member participant can always receive all media. |
params.meta? | [Record ][record-type]<string, unknown> | Metadata to assign to the member. |
params.permissions? | string[] | List of [permissions][permissions] to grant when the Audience participant will become a Member. |
Returns
Promise<void>
Permissions
room.member.promote
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.promote({
memberId: "de550c0c-3fac-4efd-b06f-b5b8614b8966",
mediaAllowed: "all",
permissions: [
"room.self.audio_mute",
"room.self.audio_unmute",
"room.self.video_mute",
"room.self.video_unmute",
"room.list_available_layouts",
],
});
removeAllListeners
▸ removeAllListeners(event?
)
Detaches all event listeners for the specified event.
Parameters
Name | Type | Description |
---|---|---|
event? | string | Name of the event (leave this undefined to detach listeners for all events). See Events for the list of available events. |
removeAllMembers
▸ removeAllMembers(): Promise<void>
Removes all the members from this room session. The room session will end.
Returns
Promise<void>
Permissions
room.member.remove
: to remove a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.removeAllMembers();
removeMember
▸ removeMember(params
): Promise<void>
Removes a specific participant from the room.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId | string | Id of the member to remove. |
Returns
Promise<void>
Permissions
room.member.remove
: to remove a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Example
const id = "de550c0c-3fac-4efd-b06f-b5b8614b8966"; // you can get this from getMembers()
await roomSession.removeMember({ memberId: id });
sendDigits
▸ sendDigits(string
): Promise<void>
Sends DTMF digits to the room. The digits will be sent to the RoomSession.
Parameters
Name | Type | Description |
---|---|---|
dtmf | string | The digits to send. Only the characters 0-9 , A-D * , and # are allowed. |
Returns
Promise<void>
Example
await roomSession.sendDigits("1");
setHideVideoMuted
▸ setHideVideoMuted(value
): Promise<void>
Show or hide muted videos in the room layout. Members that have been muted via videoMute will not appear in the video stream, instead of appearing as a mute image, if this setting is enabled.
Muted videos are shown by default.
Parameters
Name | Type | Description |
---|---|---|
value | boolean | Whether to hide muted videos in the room layout. |
Returns
Promise<void>
Permissions
room.hide_video_muted
room.show_video_muted
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.setHideVideoMuted(false);
setInputSensitivity
▸ setInputSensitivity(params
): Promise<void>
Sets the input level at which the participant is identified as currently speaking. You can use this method to set the input sensitivity for either yourself or another participant in the room.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId? | string | Id of the member to affect. If omitted, affects the default device in the local client. |
params.value | number | Desired sensitivity from 0 (lowest sensitivity, essentially muted) to 100 (highest sensitivity). The default value is 30. |
Returns
Promise<void>
Permissions
room.self.set_input_sensitivity
: to set the sensitivity for a local device.room.member.set_input_sensitivity
: to set the sensitivity for a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Setting your own input sensitivity:
await roomSession.setInputSensitivity({ value: 80 });
Setting the input sensitivity of another participant:
const id = "de550c0c-3fac-4efd-b06f-b5b8614b8966"; // you can get this from getMembers()
await roomSession.setInputSensitivity({ memberId: id, value: 80 });
setInputVolume
▸ setInputVolume(params
): Promise<void>
Sets the input volume level (e.g. for the microphone). You can use this method to set the input volume for either yourself or another participant in the room.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId? | string | Id of the member for which to set input volume. If omitted, sets the volume of the default device in the local client. |
params.volume | number | Desired volume. Values range from -50 to 50, with a default of 0. |
Returns
Promise<void>
Permissions
room.self.set_input_volume
: to set the volume for a local device.room.member.set_input_volume
: to set the volume for a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Setting your own microphone volume:
await roomSession.setInputVolume({ volume: -10 });
Setting the microphone volume of another participant:
const id = "de550c0c-3fac-4efd-b06f-b5b8614b8966"; // you can get this from getMembers()
await roomSession.setInputVolume({ memberId: id, volume: -10 });
setLayout
▸ setLayout(params
): Promise<void>
Sets a layout for the room. You can obtain a list of available layouts with getLayouts.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.name | string | Name of the layout. |
params.positions? | VideoPositions | Positions to assign as soon as the new layout is set. |
Returns
Promise<void>
Permissions
room.set_layout
room.set_position
(if you need to assign positions)
You need to specify the permissions when creating the Video Room Token on the server side.
Example
Set the 6x6 layout:
await roomSession.setLayout({ name: "6x6" });
setLocalStream
▸ setLocalStream(stream
): void
Replaces the current local media stream with the one specified as a parameter.
Parameters
Name | Type | Description |
---|---|---|
stream | MediaStream | The media stream to use. |
Returns
void
Example
Drawing and streaming the picture of a face:
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
// Set canvas size
canvas.width = 400;
canvas.height = 400;
// Draw circle
ctx.beginPath();
ctx.arc(200, 200, 150, 0, 2 * Math.PI);
ctx.fillStyle = "lightblue";
ctx.fill();
// Draw eyes
ctx.beginPath();
ctx.arc(150, 150, 30, 0, 2 * Math.PI);
ctx.arc(250, 150, 30, 0, 2 * Math.PI);
ctx.fillStyle = "black";
ctx.fill();
// Get the media stream
const stream = canvas.captureStream(25); // 25 FPS
// Stream the canvas
await roomSession.setLocalStream(stream);
setMemberMeta
▸ setMemberMeta(params
): Promise<void>
Assigns custom metadata to the specified RoomSession member. You can use this to store metadata whose meaning is entirely defined by your application.
Note that calling this method overwrites any metadata that had been previously set on the specified member.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId? | string | Id of the member to affect. If omitted, affects the default device in the local client. |
params.meta | [Record ][record-type]<string, unknown> | The medatada object to assign to the member. |
Returns
Promise<void>
Permissions
room.self.set_meta
: to set the metadata for the local member.room.member.set_meta
: to set the metadata for a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Setting metadata for the current member:
await roomSession.setMemberMeta({
meta: {
email: "joe@example.com",
},
});
Setting metadata for another member:
await roomSession.setMemberMeta({
memberId: 'de550c0c-3fac-4efd-b06f-b5b8614b8966' // you can get this from getMembers()
meta: {
email: 'joe@example.com'
}
})
setMemberPosition
▸ setMemberPosition(params
): Promise<void>
Assigns a position in the layout to the specified member.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId? | string | Id of the member to affect. If omitted, affects the current member. |
params.position | VideoPosition | Position to assign in the layout. |
Returns
Promise<void>
Permissions
room.self.set_position
: to set the position for the local member.room.member.set_position
: to set the position for a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.setMemberPosition({
memberId: "1bf4d4fb-a3e4-4d46-80a8-3ebfdceb2a60",
position: "off-canvas",
});
setMeta
▸ setMeta(meta
): Promise<void>
Assigns custom metadata to the RoomSession. You can use this to store metadata whose meaning is entirely defined by your application.
Note that calling this method overwrites any metadata that had been previously set on this RoomSession.
Parameters
Name | Type | Description |
---|---|---|
meta | [Record ][record-type]<string, unknown> | The medatada object to assign to the RoomSession. |
Returns
Promise<void>
Permissions
room.set_meta
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.setMeta({ foo: "bar" });
setOutputVolume
▸ setOutputVolume(params
): Promise<void>
Sets the output volume level (e.g., for the speaker). You can use this method to set the output volume for either yourself or another participant in the room.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId? | string | Id of the member to affect. If omitted, affects the default device in the local client. |
params.volume | number | Desired volume. Values range from -50 to 50, with a default of 0. |
Returns
Promise<void>
Permissions
room.self.set_output_volume
: to set the speaker volume for yourself.room.member.set_output_volume
: to set the speaker volume for a remote member.
You need to specify the permissions when creating the Video Room Token on the server side.
Examples
Setting your own output volume:
await roomSession.setOutputVolume({ volume: -10 });
Setting the output volume of another participant:
const id = "de550c0c-3fac-4efd-b06f-b5b8614b8966"; // you can get this from getMembers()
await roomSession.setOutputVolume({ memberId: id, volume: -10 });
setPositions
▸ setPositions(params
): Promise<void>
Assigns a position in the layout for multiple members.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.positions | VideoPositions | Mapping of member IDs and positions to assign. |
Returns
Promise<void>
Permissions
room.set_position
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.setPositions({
positions: {
"1bf4d4fb-a3e4-4d46-80a8-3ebfdceb2a60": "reserved-1",
"e0c5be44-d6c7-438f-8cda-f859a1a0b1e7": "auto",
},
});
setPrioritizeHandraise
▸ setPrioritizeHandraise(params
): Promise<boolean>
Sets whether to prioritize hand-raise's or not.
Parameters
Name | Type | Description |
---|---|---|
param | boolean | Whether to raise or lower the hand. Default: true . If omitted, the hand status is toggled to the opposite of the current status. |
Permissions
video.prioritize_handraise
You need to specify the permissions when creating the Video Room Token on the server side.
Returns
Promise<boolean>
Example
await room.setPrioritizeHandraise(false)
setRaisedHand
▸ setRaisedHand(params
): Promise<void>
Sets the raised hand status for the current member.
Parameters
Name | Type | Description |
---|---|---|
params | Object | - |
params.memberId? | string | Id of the member to affect. If omitted, affects the current member. |
params.raised? | boolean | Whether to raise or lower the hand. Default: true . If omitted, the hand status is toggled to the opposite of the current status. |
Returns
Promise<void>
Permissions
video.member.raisehand
: to raise a handvideo.member.lowerhand
: to lower a hand
You need to specify the permissions when creating the Video Room Token on the server side.
Example
await roomSession.setRaisedHand({
memberId: "de550c0c-3fac-4efd-b06f-b5b86...",
raised: false
});
showVideoMuted
▸ showVideoMuted(): Promise<void>
⚠️ Deprecated. Use setHideVideoMuted instead.
Show muted videos in the room layout in addition to the unmuted ones. Members that have been muted via videoMute will display a mute image instead of the video.