diff options
author | Henauxg <19689618+Henauxg@users.noreply.github.com> | 2022-10-24 20:30:09 +0200 |
---|---|---|
committer | Henauxg <19689618+Henauxg@users.noreply.github.com> | 2022-10-24 20:30:09 +0200 |
commit | 70439aa333014c575d0f3bb4032c191e0c3f87b5 (patch) | |
tree | 26f52d3b7dfd03e17baf1f3a01f2ccdf0e51f29c /examples | |
parent | 7dbe997184de08ee2b0a3f12ae2f7cda12df36e2 (diff) |
[examples] Fix & improve terminal chat example
Diffstat (limited to 'examples')
-rw-r--r-- | examples/chat_server/main.rs | 19 | ||||
-rw-r--r-- | examples/terminal_chat_client/main.rs | 30 |
2 files changed, 31 insertions, 18 deletions
diff --git a/examples/chat_server/main.rs b/examples/chat_server/main.rs index bb3318e..81cd209 100644 --- a/examples/chat_server/main.rs +++ b/examples/chat_server/main.rs @@ -52,14 +52,8 @@ fn handle_client_messages(mut server: ResMut<Server>, mut users: ResMut<Users>) } } ClientMessage::Disconnect {} => { - if !users.names.contains_key(&client_id) { - warn!( - "Received a Disconnect from an unknown or disconnected client: {}", - client_id - ) - } else { + if let Some(username) = users.names.remove(&client_id) { server.disconnect_client(client_id); - let username = users.names.remove(&client_id); // Broadcast its deconnection server .send_group_message( @@ -69,7 +63,12 @@ fn handle_client_messages(mut server: ResMut<Server>, mut users: ResMut<Users>) }, ) .unwrap(); - info!("{:?} disconnected", username); + info!("{} disconnected", username); + } else { + warn!( + "Received a Disconnect from an unknown or disconnected client: {}", + client_id + ) } } ClientMessage::ChatMessage { message } => { @@ -99,8 +98,8 @@ fn main() { .add_plugin(QuinnetServerPlugin::default()) .insert_resource(ServerConfigurationData::new( "127.0.0.1".to_string(), - 5000, - "127.0.0.1".to_string(), + 6000, + "0.0.0.0".to_string(), )) .insert_resource(Users::default()) .add_system(handle_client_messages) diff --git a/examples/terminal_chat_client/main.rs b/examples/terminal_chat_client/main.rs index cc4a610..e5ca98a 100644 --- a/examples/terminal_chat_client/main.rs +++ b/examples/terminal_chat_client/main.rs @@ -1,11 +1,12 @@ use std::{ collections::HashMap, thread::{self, sleep}, - time::{Duration, SystemTime}, + time::Duration, }; use bevy::{ - app::AppExit, + app::{AppExit, ScheduleRunnerPlugin}, + log::LogPlugin, prelude::{info, warn, App, Commands, CoreStage, EventReader, EventWriter, Res, ResMut}, }; use bevy_quinnet::{ @@ -13,6 +14,7 @@ use bevy_quinnet::{ ClientId, }; use chat_protocol::{ClientMessage, ServerMessage}; +use rand::{distributions::Alphanumeric, Rng}; use tokio::sync::mpsc; #[path = "../chat_protocol/lib.rs"] // Because we can't have a shared lib between Cargo examples @@ -44,14 +46,16 @@ fn handle_server_messages(mut client: ResMut<Client>, mut users: ResMut<Users>) } ServerMessage::ClientDisconnected { client_id } => { if let Some(username) = users.names.remove(&client_id) { - info!("{} left", username); + println!("{} left", username); } else { warn!("ClientDisconnected for an unknown client_id: {}", client_id) } } ServerMessage::ChatMessage { client_id, message } => { if let Some(username) = users.names.get(&client_id) { - info!("{}: {}", username, message); + if client_id != users.self_id { + println!("{}: {}", username, message); + } } else { warn!("Chat message from an unknown client_id: {}", client_id) } @@ -100,21 +104,31 @@ fn start_terminal_listener(mut commands: Commands) { fn start_connection(client: ResMut<Client>) { client.connect().unwrap(); - let random_name = format!("User_{:?}", SystemTime::now()); + let username: String = rand::thread_rng() + .sample_iter(&Alphanumeric) + .take(7) + .map(char::from) + .collect(); + + println!("--- Joining with name: {}", username); + println!("--- Type 'quit' to disconnect"); + // You can already send message(s) even before being connected, they will be buffered. Else, just wait for client.is_connected() client - .send_message(ClientMessage::Join { name: random_name }) + .send_message(ClientMessage::Join { name: username }) .unwrap(); } fn main() { App::new() + .add_plugin(ScheduleRunnerPlugin::default()) + .add_plugin(LogPlugin::default()) .add_plugin(QuinnetClientPlugin::default()) // Currently, bevy_quinnet takes its configuration as a resource .insert_resource(ClientConfigurationData::new( "127.0.0.1".to_string(), - 5000, - "127.0.0.1".to_string(), + 6000, + "0.0.0.0".to_string(), 0, )) .insert_resource(Users::default()) |