mirror of
https://github.com/csehviktor/status-monitor.git
synced 2025-08-08 18:06:14 +02:00
24 lines
602 B
Rust
24 lines
602 B
Rust
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<ClientManager>) {
|
|
let (mut ws_tx, _) = websocket.split();
|
|
let (tx, mut rx) = channel::<String>(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;
|
|
}
|
|
}
|
|
});
|
|
}
|