use warp::filters::ws::{Message, WebSocket}; use futures_util::{SinkExt, StreamExt}; use tokio::sync::mpsc::channel; use std::sync::Arc; use crate::bridge::ClientManager; pub mod server; pub async fn handle_ws_connection(websocket: WebSocket, clients: Arc) { let (mut ws_tx, _) = websocket.split(); let (tx, mut rx) = channel::(100); clients.add_client(tx).await; tokio::spawn(async move { while let Some(msg) = rx.recv().await { if ws_tx.send(Message::text(msg)).await.is_err() { break; } } }); }