summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-08 22:48:35 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-08 22:48:35 +0200
commitf47240d8e54c70f7b4ffec39c0793c58c1b5a346 (patch)
tree9fb28daa5b91239821b8b844b7c1ee132217b5d9 /server
parent5528f9ae01c9c372f142f7bdb1e8049559bdfcbe (diff)
downloadhurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar
hurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar.bz2
hurrycurry-f47240d8e54c70f7b4ffec39c0793c58c1b5a346.tar.zst
better handle message lag
Diffstat (limited to 'server')
-rw-r--r--server/src/main.rs15
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(