diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-08 22:48:35 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-08 22:48:35 +0200 |
commit | f47240d8e54c70f7b4ffec39c0793c58c1b5a346 (patch) | |
tree | 9fb28daa5b91239821b8b844b7c1ee132217b5d9 /server | |
parent | 5528f9ae01c9c372f142f7bdb1e8049559bdfcbe (diff) | |
download | hurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar hurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar.bz2 hurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar.zst |
better handle message lag
Diffstat (limited to 'server')
-rw-r--r-- | server/src/main.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/server/src/main.rs b/server/src/main.rs index 4c6bcc34..27f81fbb 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -77,7 +77,7 @@ async fn run() -> anyhow::Result<()> { let ws_listener = TcpListener::bind("0.0.0.0:27032").await?; info!("listening for websockets on {}", ws_listener.local_addr()?); - let (tx, rx) = broadcast::channel::<PacketC>(1024); + let (tx, rx) = broadcast::channel::<PacketC>(128 * 1024); let state = Arc::new(RwLock::new(State::new(tx).await?)); { @@ -120,11 +120,18 @@ async fn run() -> anyhow::Result<()> { } } loop { - let Some(packet) = tokio::select!( + let packet = match tokio::select!( p = rx.recv() => p.ok(), p = error_rx.recv() => p, - ) else { - break; + ) { + Some(p) => p, + None => { + rx = rx.resubscribe(); + PacketC::ServerMessage { + text: "Lagging behind. Some clientbound packets were dropped." + .to_string(), + } + } }; if let Err(e) = write .send(tokio_tungstenite::tungstenite::Message::Text( |