diff --git a/livekit-ffi/protocol/room.proto b/livekit-ffi/protocol/room.proto index 168681da0..6b0ca4730 100644 --- a/livekit-ffi/protocol/room.proto +++ b/livekit-ffi/protocol/room.proto @@ -359,7 +359,6 @@ message RoomEvent { ParticipantMetadataChanged participant_metadata_changed = 17; ParticipantNameChanged participant_name_changed = 18; ParticipantAttributesChanged participant_attributes_changed = 19; - ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39; ConnectionQualityChanged connection_quality_changed = 20; ConnectionStateChanged connection_state_changed = 21; // Connected connected = 21; @@ -385,6 +384,8 @@ message RoomEvent { RoomInfo moved = 37; // carry over all participant info updates, including sid ParticipantsUpdated participants_updated = 38; + ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39; + TokenRefreshed token_refreshed = 40; } } @@ -561,6 +562,10 @@ message Disconnected { message Reconnecting {} message Reconnected {} +message TokenRefreshed { + required string token = 1; +} + message RoomEOS {} message DataStream { diff --git a/livekit-ffi/src/server/room.rs b/livekit-ffi/src/server/room.rs index edaa290d7..f63289928 100644 --- a/livekit-ffi/src/server/room.rs +++ b/livekit-ffi/src/server/room.rs @@ -1426,6 +1426,9 @@ async fn forward_event( .into(), ); } + RoomEvent::TokenRefreshed { token } => { + let _ = send_event(proto::TokenRefreshed { token: token.into() }.into()); + } _ => { log::warn!("unhandled room event: {:?}", event); } diff --git a/livekit/src/room/mod.rs b/livekit/src/room/mod.rs index aebe35a56..4b0e0cc0f 100644 --- a/livekit/src/room/mod.rs +++ b/livekit/src/room/mod.rs @@ -234,6 +234,9 @@ pub enum RoomEvent { ParticipantsUpdated { participants: Vec, }, + TokenRefreshed { + token: String, + }, } #[derive(Debug, Clone, Copy, Eq, PartialEq)] @@ -1741,6 +1744,8 @@ impl RoomSession { for filter in registered_audio_filter_plugins().into_iter() { filter.update_token(url.clone(), token.clone()); } + let event = RoomEvent::TokenRefreshed { token }; + self.dispatcher.dispatch(&event); } }