From c6a8c417efe78635847d73dc0e2587d9ab513632 Mon Sep 17 00:00:00 2001 From: Bastian Gruber Date: Sat, 29 Apr 2023 18:34:47 +0200 Subject: [PATCH] Fix ordering of messages --- problem_03/src/server.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/problem_03/src/server.rs b/problem_03/src/server.rs index 4f4fce9..108c183 100644 --- a/problem_03/src/server.rs +++ b/problem_03/src/server.rs @@ -40,7 +40,7 @@ async fn main() -> Result<()> { // Infinite loop to always listen to new connections on this IP/PORT loop { let (stream, address) = listener.accept().await?; - let (tx, mut rx) = (tx.clone(), tx.subscribe()); + let (tx, rx) = (tx.clone(), tx.subscribe()); let db = db.clone(); tokio::spawn(async move { @@ -63,12 +63,6 @@ async fn main() -> Result<()> { let message = compose_message(username.clone(), db.clone()); info!("Adding username: {username} to db"); let _ = framed.send(message).await; - info!("Send message to client"); - let b = BroadcastMessage( - username.clone(), - format!("* {} has entered the room", username), - ); - let _ = tx.send(b); } else { return; } @@ -83,6 +77,13 @@ async fn main() -> Result<()> { } } + let b = BroadcastMessage( + name.clone(), + format!("* {} has entered the room", name), + ); + let _ = tx.send(b); + let mut rx = rx.resubscribe(); + loop { tokio::select! { n = framed.next() => {