init
This commit is contained in:
@@ -5,8 +5,23 @@ use crate::core::AppState;
|
||||
use crate::models::{channel, user};
|
||||
use axum::extract::ws::{Message, WebSocket};
|
||||
use futures_util::{SinkExt, StreamExt};
|
||||
use rustrtc::PeerConnection;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::mpsc;
|
||||
|
||||
// 1. Le frontend ouvre /rtc/{channel_id}
|
||||
// 2. Axum extrait channel_id
|
||||
// 3. CurrentUser identifie l'utilisateur
|
||||
// 4. Le serveur vérifie le canal et les permissions
|
||||
// 5. Le serveur accepte le WebSocket
|
||||
// 6. Le client envoie son SDP Offer
|
||||
// 7. Le serveur crée la PeerConnection
|
||||
// 8. Le serveur applique l'Offer
|
||||
// 9. Le serveur crée une SDP Answer
|
||||
// 10. Le serveur renvoie l'Answer
|
||||
// 11. Les candidats ICE sont échangés
|
||||
// 12. À la déconnexion, la PeerConnection est fermée
|
||||
|
||||
pub async fn ws_entrypoint_handler(
|
||||
socket: WebSocket,
|
||||
state: AppState,
|
||||
@@ -15,7 +30,8 @@ pub async fn ws_entrypoint_handler(
|
||||
) {
|
||||
let (mut sender, mut receiver) = socket.split();
|
||||
let (tx, mut rx) = mpsc::unbounded_channel::<Message>();
|
||||
// todo : faire le peer connexion.
|
||||
|
||||
let peer_connection = Arc::new(PeerConnection::new(state.rtc.config.clone()));
|
||||
let mut rtc_client = RtcClient::new(user, channel, peer_connection, tx);
|
||||
|
||||
let send_task = tokio::spawn(async move {
|
||||
|
||||
Reference in New Issue
Block a user