From 6a84f887cae824270454a0267cf85ee33fe415c8 Mon Sep 17 00:00:00 2001 From: threadexio Date: Sun, 17 Dec 2023 11:08:53 +0200 Subject: [PATCH] fix: chat-app do not send empty messages --- examples/chat-app/src/common.rs | 2 +- examples/chat-app/src/connect.rs | 13 ++++++++----- examples/chat-app/src/serve.rs | 11 +++++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/examples/chat-app/src/common.rs b/examples/chat-app/src/common.rs index d8034fe..82f0fe1 100644 --- a/examples/chat-app/src/common.rs +++ b/examples/chat-app/src/common.rs @@ -18,7 +18,7 @@ pub enum ServerNetMessage { UserConnected { name: String }, } -type Serdes = channels::serdes::Json; +type Serdes = channels::serdes::Bincode; #[derive(Debug)] pub struct ClientSide { diff --git a/examples/chat-app/src/connect.rs b/examples/chat-app/src/connect.rs index b62dad8..c50da9d 100644 --- a/examples/chat-app/src/connect.rs +++ b/examples/chat-app/src/connect.rs @@ -53,12 +53,15 @@ pub async fn connect( line.clear(); stdin.read_line(&mut line).await.context("failed to read line from stdin") } => { - r?; + let _ = r?; + let line = line.trim(); - state - .net - .send(ClientNetMessage::SendMessage { content: line.trim().to_owned() }) - .await.context("failed to send message")?; + if !line.is_empty() { + state + .net + .send(ClientNetMessage::SendMessage { content: line.to_owned() }) + .await.context("failed to send message")?; + } } r = state.net.recv() => { let message = r.context("failed to receive message")?; diff --git a/examples/chat-app/src/serve.rs b/examples/chat-app/src/serve.rs index 7350995..32eb8ca 100644 --- a/examples/chat-app/src/serve.rs +++ b/examples/chat-app/src/serve.rs @@ -64,10 +64,13 @@ async fn handle_client(state: State) -> Result<()> { r = client.net.recv() => { match r? { ClientNetMessage::SendMessage { content } => { - client.srv.send(Notification::ChatMessage { - owner: client.state.name.clone(), - content, - }); + let content = content.trim(); + if !content.is_empty() { + client.srv.send(Notification::ChatMessage { + owner: client.state.name.clone(), + content: content.to_owned(), + }); + } } _ => bail!("unexpected message received") }