init
This commit is contained in:
+25
-4
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user