use beet::net::prelude::sockets::Message;
use beet::net::prelude::sockets::*;
use beet::prelude::*;
use beet_net::sockets::common_handlers::PingTime;
fn main() {
App::new()
.add_plugins((
MinimalPlugins,
LogPlugin::default(),
AsyncPlugin::default(),
))
.spawn_then((
Socket::insert_on_connect("ws://127.0.0.1:9000"),
OnSpawn::observe(on_ready),
OnSpawn::observe(my_handler),
OnSpawn::observe(common_handlers::log_send),
OnSpawn::observe(common_handlers::echo_pingtime),
OnSpawn::observe(common_handlers::log_recv),
))
.run();
info!("Done");
}
fn on_ready(ev: On<SocketReady>, mut commands: Commands) {
commands
.entity(ev.target())
.trigger_target(MessageSend(PingTime::default().into_message()))
.trigger_target(MessageSend(Message::Text(
"the cat sat on the".into(),
)));
}
fn my_handler(ev: On<MessageRecv>, mut commands: Commands) {
match ev.event().inner() {
Message::Text(txt) if txt == "hat" => {
commands
.entity(ev.target())
.trigger_target(MessageSend(Message::Close(None)));
}
Message::Close(_) => {
println!("done!");
commands.write_message(AppExit::Success);
}
_ => {}
}
}