feat: add routing text messages

This commit is contained in:
2026-08-17 19:53:15 +02:00
parent 8ee7242726
commit 9b86e95701
4 changed files with 24 additions and 10 deletions

View File

@@ -124,8 +124,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
Some(ClientData::AvailableMoves(move_paths)) => todo!(),
Some(ClientData::TextMessage(content)) => {
info!("Got message from the server: {}", content);
Some(ClientData::TextMessage {sender, content}) => {
info!("[{}] - {}", sender, content);
}
Some(ClientData::GameEnd(game_result)) => {

View File

@@ -48,7 +48,7 @@ pub enum ClientData {
BoardView(BoardView),
CurrentTurn(Uuid),
TextMessage(String),
TextMessage { sender: String, content: String },
}
pub struct Client {
@@ -66,7 +66,7 @@ impl Client {
pub async fn new() -> Option<Client> {
let settings = ClientSettings {
server_url: SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 6767),
name: "Szymon".into(),
name: "Morbius".into(),
};
let (conn_sender, conn_reciever) =
@@ -169,14 +169,20 @@ impl Client {
let _ = update_sender.send(ClientData::GameStart { identity }).await;
}
ServerMessage::AvailableCaptures { captures } => todo!(),
ServerMessage::AvailableMoves { moves } => todo!(),
ServerMessage::BroadcastBoardState { board } => {
let _ = update_sender.send(ClientData::BoardView(board)).await;
},
ServerMessage::BroadcastCurrentTurn { active_player } => {
let _ = update_sender.send(ClientData::CurrentTurn(active_player)).await;
},
ServerMessage::BroadcastBoardState { board } => {
let _ = update_sender.send(ClientData::BoardView(board)).await;
},
ServerMessage::BroadCastTextMessage {sender, content} => {
let _ = update_sender.send(ClientData::TextMessage {sender, content}).await;
}
ServerMessage::AvailableCaptures { captures } => todo!(),
ServerMessage::AvailableMoves { moves } => todo!(),
ServerMessage::GameEnd { result } => todo!(),
}
} else {

View File

@@ -50,9 +50,10 @@ pub enum ServerMessage {
AvailableMoves { moves: Vec<MovePath> },
BroadcastBoardState { board: BoardView },
BroadcastCurrentTurn { active_player: Uuid },
BroadCastTextMessage { sender: String, content: String },
GameEnd { result: GameResult },
}

View File

@@ -204,6 +204,8 @@ impl Server {
ClientMessage::TextMessage (content) => {
info!("{} sent us a message: {}", addr, content);
let sender = self.connections[&addr].identity.name.clone();
self.broadcast_text_message(sender, content).await;
}
}
} else {
@@ -362,6 +364,11 @@ impl Server {
}
}
async fn broadcast_text_message(&mut self, sender: String, content: String) {
let msg = Message::new(ServerMessage::BroadCastTextMessage { sender, content });
self.broadcast_message(msg).await;
}
/* === Helper methods === */
async fn send_message(