This commit is contained in:
2026-09-19 21:34:06 +02:00
parent 8d48b1617b
commit 8297111060
8 changed files with 97 additions and 23 deletions
+32 -3
View File
@@ -1,7 +1,36 @@
// This is the first point when WebRTC ask for a connection
use super::client::RtcClient;
use crate::core::AppState;
use crate::models::user;
use axum::extract::ws::WebSocket;
use crate::models::{channel, user};
use axum::extract::ws::{Message, WebSocket};
use futures_util::{SinkExt, StreamExt};
use tokio::sync::mpsc;
pub async fn ws_entrypoint_handler(socket: WebSocket, state: AppState, user: user::Model) {}
pub async fn ws_entrypoint_handler(
socket: WebSocket,
state: AppState,
channel: channel::Model,
user: user::Model,
) {
let (mut sender, mut receiver) = socket.split();
let (tx, mut rx) = mpsc::unbounded_channel::<Message>();
// todo : faire le peer connexion.
let mut rtc_client = RtcClient::new(user, channel, peer_connection, tx);
let send_task = tokio::spawn(async move {
while let Some(message) = rx.recv().await {
if sender.send(message).await.is_err() {
break;
}
}
});
let client_clone = rtc_client.clone();
let state_clone = state.clone();
let mut recv_task = tokio::spawn(async move {
while let Some(Ok(message)) = receiver.next().await {
client_clone.on_message(message, &state_clone).await;
}
});
}