diff options
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( | 
