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/src | |
| parent | 5528f9ae01c9c372f142f7bdb1e8049559bdfcbe (diff) | |
| download | hurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar hurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar.bz2 hurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar.zst | |
better handle message lag
Diffstat (limited to 'server/src')
| -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( | 
