#[non_exhaustive]pub enum RoomEvent {
Show 44 variants
ParticipantConnected(RemoteParticipant),
ParticipantActive(RemoteParticipant),
ParticipantDisconnected(RemoteParticipant),
LocalTrackPublished {
publication: LocalTrackPublication,
track: LocalTrack,
participant: LocalParticipant,
},
LocalTrackUnpublished {
publication: LocalTrackPublication,
participant: LocalParticipant,
},
LocalTrackRepublished {
previous_sid: TrackSid,
publication: LocalTrackPublication,
track: LocalTrack,
participant: LocalParticipant,
},
LocalTrackSubscribed {
track: LocalTrack,
},
TrackSubscribed {
track: RemoteTrack,
publication: RemoteTrackPublication,
participant: RemoteParticipant,
},
TrackUnsubscribed {
track: RemoteTrack,
publication: RemoteTrackPublication,
participant: RemoteParticipant,
},
TrackSubscriptionFailed {
participant: RemoteParticipant,
error: TrackError,
track_sid: TrackSid,
},
TrackPublished {
publication: RemoteTrackPublication,
participant: RemoteParticipant,
},
TrackUnpublished {
publication: RemoteTrackPublication,
participant: RemoteParticipant,
},
TrackMuted {
participant: Participant,
publication: TrackPublication,
},
TrackUnmuted {
participant: Participant,
publication: TrackPublication,
},
RoomMetadataChanged {
old_metadata: String,
metadata: String,
},
ParticipantMetadataChanged {
participant: Participant,
old_metadata: String,
metadata: String,
},
ParticipantNameChanged {
participant: Participant,
old_name: String,
name: String,
},
ParticipantAttributesChanged {
participant: Participant,
changed_attributes: HashMap<String, String>,
},
ParticipantEncryptionStatusChanged {
participant: Participant,
is_encrypted: bool,
},
ParticipantPermissionChanged {
participant: Participant,
permission: Option<ParticipantPermission>,
},
ActiveSpeakersChanged {
speakers: Vec<Participant>,
},
ConnectionQualityChanged {
quality: ConnectionQuality,
participant: Participant,
},
DataReceived {
payload: Arc<Vec<u8>>,
topic: Option<String>,
kind: DataPacketKind,
participant: Option<RemoteParticipant>,
},
TranscriptionReceived {
participant: Option<Participant>,
track_publication: Option<TrackPublication>,
segments: Vec<TranscriptionSegment>,
},
SipDTMFReceived {
code: u32,
digit: Option<String>,
participant: Option<RemoteParticipant>,
},
ChatMessage {
message: ChatMessage,
participant: Option<RemoteParticipant>,
},
ByteStreamOpened {
reader: TakeCell<ByteStreamReader>,
topic: String,
participant_identity: ParticipantIdentity,
},
TextStreamOpened {
reader: TakeCell<TextStreamReader>,
topic: String,
participant_identity: ParticipantIdentity,
},
StreamHeaderReceived {
header: Header,
participant_identity: String,
},
StreamChunkReceived {
chunk: Chunk,
participant_identity: String,
},
StreamTrailerReceived {
trailer: Trailer,
participant_identity: String,
},
E2eeStateChanged {
participant: Participant,
state: EncryptionState,
},
ConnectionStateChanged(ConnectionState),
Connected {
participants_with_tracks: Vec<(RemoteParticipant, Vec<RemoteTrackPublication>)>,
},
Disconnected {
reason: DisconnectReason,
},
Reconnecting,
Reconnected,
DataChannelBufferedAmountLowThresholdChanged {
kind: DataPacketKind,
threshold: u64,
},
RoomUpdated {
room: RoomInfo,
},
Moved {
room: RoomInfo,
},
ParticipantsUpdated {
participants: Vec<Participant>,
},
TokenRefreshed {
token: String,
},
DataTrackPublished(RemoteDataTrack),
DataTrackUnpublished(DataTrackSid),
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ParticipantConnected(RemoteParticipant)
Remote participant joined the room.
This event is fired immediately after a participant joins before
it is able to receive data messages. To send data messages in response
to a participant joining, respond to the Self::ParticipantActive event instead.
ParticipantActive(RemoteParticipant)
Remote participant is active and ready to receive data messages.
ParticipantDisconnected(RemoteParticipant)
Remote participant disconnected from the room.
LocalTrackPublished
LocalTrackUnpublished
LocalTrackRepublished
Fired when the SDK auto-republishes a local track during a full
reconnect. The same underlying Track (and its bound source) is
preserved across the cycle, but the publication and track SIDs are
re-issued by the server. Bindings are expected to update the
existing publication object in place rather than treating this as
an unpublish + publish pair.
LocalTrackSubscribed
Fields
track: LocalTrackTrackSubscribed
TrackUnsubscribed
TrackSubscriptionFailed
TrackPublished
TrackUnpublished
TrackMuted
TrackUnmuted
RoomMetadataChanged
ParticipantMetadataChanged
ParticipantNameChanged
ParticipantAttributesChanged
ParticipantEncryptionStatusChanged
ParticipantPermissionChanged
ActiveSpeakersChanged
Fields
speakers: Vec<Participant>ConnectionQualityChanged
DataReceived
TranscriptionReceived
Fields
participant: Option<Participant>track_publication: Option<TrackPublication>segments: Vec<TranscriptionSegment>SipDTMFReceived
ChatMessage
ByteStreamOpened
TextStreamOpened
StreamHeaderReceived
Use high-level data streams API instead.
Fields
StreamChunkReceived
Use high-level data streams API instead.
Fields
StreamTrailerReceived
Use high-level data streams API instead.
Fields
E2eeStateChanged
ConnectionStateChanged(ConnectionState)
Connected
Fields
participants_with_tracks: Vec<(RemoteParticipant, Vec<RemoteTrackPublication>)>Initial participants & their tracks prior to joining the room We’re not returning this directly inside Room::connect because it is unlikely to be used
Disconnected
Fields
reason: DisconnectReasonReconnecting
Reconnected
DataChannelBufferedAmountLowThresholdChanged
RoomUpdated
Moved
ParticipantsUpdated
Fields
participants: Vec<Participant>TokenRefreshed
DataTrackPublished(RemoteDataTrack)
A remote participant published a data track.
DataTrackUnpublished(DataTrackSid)
A remote participant has unpublished a data track.