***
id: 8a611343-004a-4805-896c-45d1b0ee6815
title: Events
slug: /node/reference/video/room-session/events
description: Events available on the RoomSession class.
max-toc-depth: 3
----------------
[roomsession-41]: /docs/server-sdk/v4/node/reference/video/room-session
[roomsessionmember-28]: /docs/server-sdk/v4/node/reference/video/room-session-member
[roomsessionplayback-12]: /docs/server-sdk/v4/node/reference/video/room-session-playback
[roomsessionrecording-12]: /docs/server-sdk/v4/node/reference/video/room-session-recording
[roomsessionstream-8]: /docs/server-sdk/v4/node/reference/video/room-session-stream
[videoposition]: /docs/platform/video
## Events
### onRoomSubscribed
* **RoomSession.listen**(`{ onRoomSubscribed: Callback }`)
Emitted when the room session is subscribed too. Your event handler
will be called with an instance of the [`RoomSession`][roomsession-41] object.
#### Parameters
The room session object. See [`RoomSession`][roomsession-41].
### onRoomStarted
* **RoomSession.listen**(`{ onRoomStarted: Callback }`)
This event is emitted when the first participant joins the room.
Emitted when the room session is started.
Your event handler will be called with an instance of the [`RoomSession`][roomsession-41] object.
#### Parameters
The room session object. See [`RoomSession`][roomsession-41].
### onRoomUpdated
* **RoomSession.listen**(`{ onRoomUpdated: Callback }`)
Emitted when the room session is updated. Your event handler
will be called with an instance of the [`RoomSession`][roomsession-41] object.
#### Parameters
The room session object. See [`RoomSession`][roomsession-41].
### onRoomEnded
* **RoomSession.listen**(`{ onRoomEnded: Callback }`)
Emitted when the room session is ended. Your event handler
will be called with an instance of the [`RoomSession`][roomsession-41] object.
#### Parameters
The room session object. See [`RoomSession`][roomsession-41].
### onRoomAudienceCount
* **RoomSession.listen**(`{ onRoomAudienceCount: Callback }`)
Emitted periodically, and when the audience count of the room changes. Your event handler
will be called with an instance of the `VideoRoomAudienceCount` object.
#### Parameters
Object containing the event parameters.
ID of the room session.
ID of the room.
Total number of audience members.
### onLayoutChanged
* **RoomSession.listen**(`{ onLayoutChanged: Callback }`)
Emitted when the layout of the room changes. Your event handler
will be called with an instance of the `VideoLayOutChanged` object.
#### Parameters
Object containing the event parameters.
ID of the room session.
ID of the room.
Name of the new layout.
### onMemberJoined
* **RoomSession.listen**(`{ onMemberJoined: Callback }`)
This event is only emitted when the room session has already been started.
This means the first participant to join the room will not trigger this event.
Emitted when a member joins the room. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member that joined. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberUpdated
* **RoomSession.listen**(`{ onMemberUpdated: Callback }`)
Emitted when a member in the room is updated. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member that was updated. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberListUpdated
* **RoomSession.listen**(`{ onMemberListUpdated: Callback }`)
Emitted when the list of members in the room is updated. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member list update. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberLeft
* **RoomSession.listen**(`{ onMemberLeft: Callback }`)
Emitted when a member leaves the room. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member that left. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberDeaf
* **RoomSession.listen**(`{ onMemberDeaf: Callback }`)
Emitted when a member in the room deafens status changes. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member whose deaf status changed. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberVisible
* **RoomSession.listen**(`{ onMemberVisible: Callback }`)
Emitted when a member in the room visibility changes. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member whose visibility changed. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberAudioMuted
* **RoomSession.listen**(`{ onMemberAudioMuted: Callback }`)
Emitted when a member in the room audio state changes. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member whose audio mute state changed. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberVideoMuted
* **RoomSession.listen**(`{ onMemberVideoMuted: Callback }`)
Emitted when a member in the room video state changes. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member whose video mute state changed. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberInputVolume
* **RoomSession.listen**(`{ onMemberInputVolume: Callback }`)
Emitted when a member in the room input volume changes. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member whose input volume changed. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberOutputVolume
* **RoomSession.listen**(`{ onMemberOutputVolume: Callback }`)
Emitted when a member in the room output volume changes. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member whose output volume changed. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberInputSensitivity
* **RoomSession.listen**(`{ onMemberInputSensitivity: Callback }`)
Emitted when a member in the room input sensitivity changes. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member whose input sensitivity changed. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberTalking
* **RoomSession.listen**(`{ onMemberTalking: Callback }`)
Emitted when a member in the room talking status changes. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member whose talking status changed. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberTalkingStarted
* **RoomSession.listen**(`{ onMemberTalkingStarted: Callback }`)
Emitted when a member in the room starts talking. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member who started talking. See [`RoomSessionMember`][roomsessionmember-28].
### onMemberTalkingEnded
• **RoomSession.listen**(`{ onMemberTalkingEnded: Callback }`)
Emitted when a member in the room stops talking. Your event handler
will be called with an instance of the [`RoomSessionMember`][roomsessionmember-28] object.
#### Parameters
The member who stopped talking. See [`RoomSessionMember`][roomsessionmember-28].
### onPlaybackStarted
• **RoomSession.listen**(`{ onPlaybackStarted: Callback }`)
Emitted when a playback starts in the room. Your event handler
will be called with an instance of the [`RoomSessionPlayback`][roomsessionplayback-12] object.
#### Parameters
The playback that started. See [`RoomSessionPlayback`][roomsessionplayback-12].
### onPlaybackUpdated
* **RoomSession.listen**(`{ onPlaybackUpdated: Callback }`)
Emitted when a playback in the room is updated. Your event handler
will be called with an instance of the [`RoomSessionPlayback`][roomsessionplayback-12] object.
#### Parameters
The playback that was updated. See [`RoomSessionPlayback`][roomsessionplayback-12].
### onPlaybackEnded
* **RoomSession.listen**(`{ onPlaybackEnded: Callback }`)
Emitted when a playback in the room ends. Your event handler
will be called with an instance of the [`RoomSessionPlayback`][roomsessionplayback-12] object.
#### Parameters
The playback that ended. See [`RoomSessionPlayback`][roomsessionplayback-12].
### onRecordingStarted
* **RoomSession.listen**(`{ onRecordingStarted: Callback }`)
Emitted when a recording starts in the room. Your event handler
will be called with an instance of the [`RoomSessionRecording`][roomsessionrecording-12] object.
#### Parameters
The recording that started. See [`RoomSessionRecording`][roomsessionrecording-12].
### onRecordingUpdated
* **RoomSession.listen**(`{ onRecordingUpdated: Callback }`)
Emitted when a recording in the room is updated. Your event handler
will be called with an instance of the [`RoomSessionRecording`][roomsessionrecording-12] object.
#### Parameters
The recording that was updated. See [`RoomSessionRecording`][roomsessionrecording-12].
### onRecordingEnded
* **RoomSession.listen**(`{ onRecordingEnded: Callback }`)
Emitted when a recording in the room ends. Your event handler
will be called with an instance of the [`RoomSessionRecording`][roomsessionrecording-12] object.
#### Parameters
The recording that ended. See [`RoomSessionRecording`][roomsessionrecording-12].
### onStreamEnded
* **RoomSession.listen**(`{ onStreamEnded: Callback }`)
Emitted when a stream in the room ends. Your event handler
will be called with an instance of the [`RoomSessionStream`][roomsessionstream-8] object.
#### Parameters
The stream that ended. See [`RoomSessionStream`][roomsessionstream-8].
### onStreamStarted
* **RoomSession.listen**(`{ onStreamStarted: Callback }`)
Emitted when a stream starts in the room. Your event handler
will be called with an instance of the [`RoomSessionStream`][roomsessionstream-8] object.
#### Parameters
The stream that started. See [`RoomSessionStream`][roomsessionstream-8].
## **Alias Types**
### VideoPositions
▪ **VideoPositions**: \[ **key**: `string`]: [`VideoPosition`][videoposition]
An object whose keys represent member IDs, and values the layout position to assign.
Instead of a member ID, in some contexts you can use
the special keyword `self` if you don't know yet the ID of the member which
is going to be created.
The position of the member in the layout is determined automatically.
The reserved position in the layout (e.g. `reserved-3`).
The standard position in the layout (e.g. `standard-3`).
Assign the member off-canvas, outside the layout.