This commit is contained in:
2026-09-20 20:59:41 +02:00
parent 8297111060
commit 7f1402dd33
7 changed files with 111 additions and 5 deletions
+25 -4
View File
@@ -1,3 +1,4 @@
use super::messages::VoiceClientMessage;
use crate::models::{channel, user};
use axum::extract::ws::Message;
use rustrtc::peer_connection::PeerConnection;
@@ -7,8 +8,8 @@ use tokio::sync::mpsc::UnboundedSender;
/// Client connecté à un canal RTC.
#[derive(Clone)]
pub struct RtcClient {
pub user: user::Model,
pub channel: channel::Model,
pub user: Arc<user::Model>,
pub channel: Arc<channel::Model>,
pub peer_connection: Arc<PeerConnection>,
pub websocket_sender: UnboundedSender<Message>,
}
@@ -21,13 +22,33 @@ impl RtcClient {
websocket_sender: UnboundedSender<Message>,
) -> Self {
Self {
user,
channel,
user: Arc::new(user),
channel: Arc::new(channel),
peer_connection,
websocket_sender,
}
}
pub fn on_message(&self, raw_message: Message) {
let Message::Text(raw_message) = raw_message else {
return;
};
let parsed = match serde_json::from_str::<VoiceClientMessage>(&raw_message) {
Ok(message) => message,
Err(_) => return,
};
match parsed {
VoiceClientMessage::SDPOffer { channel_id, sdp } => {}
VoiceClientMessage::IceCandidate {
channel_id,
candidate,
} => {}
VoiceClientMessage::Leave { channel_id } => {}
}
}
/// Ferme proprement la connexion WebRTC.
pub fn close(&self) {
self.peer_connection.close();