aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorHenauxg <19689618+Henauxg@users.noreply.github.com>2022-10-24 20:30:09 +0200
committerHenauxg <19689618+Henauxg@users.noreply.github.com>2022-10-24 20:30:09 +0200
commit70439aa333014c575d0f3bb4032c191e0c3f87b5 (patch)
tree26f52d3b7dfd03e17baf1f3a01f2ccdf0e51f29c /examples
parent7dbe997184de08ee2b0a3f12ae2f7cda12df36e2 (diff)
[examples] Fix & improve terminal chat example
Diffstat (limited to 'examples')
-rw-r--r--examples/chat_server/main.rs19
-rw-r--r--examples/terminal_chat_client/main.rs30
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())