use auraxis::realtime::event::EventNames; use auraxis::realtime::subscription::{ CharacterSubscription, EventSubscription, SubscriptionSettings, WorldSubscription, }; use auraxis::realtime::{ client::{RealtimeClient, RealtimeClientConfig}, event::Event, }; use auraxis::WorldID; use std::error::Error; #[tokio::main(flavor = "current_thread")] async fn main() -> Result<(), Box> { tracing_subscriber::fmt() .with_max_level(tracing::Level::DEBUG) .with_target(false) .init(); let config = RealtimeClientConfig { service_id: "example".to_string(), ..RealtimeClientConfig::default() }; let subscription = SubscriptionSettings { event_names: Some(EventSubscription::Ids(vec![EventNames::PlayerLogin])), characters: Some(CharacterSubscription::All), worlds: Some(WorldSubscription::Ids(vec![WorldID::Emerald])), logical_and_characters_with_worlds: Some(true), ..SubscriptionSettings::default() }; let mut client = RealtimeClient::new(config); client.subscribe(subscription); let mut events = client.connect().await?; while let Some(event) = events.recv().await { match &event { Event::PlayerLogin(player) => { println!("Player {} logged in", player.character_id); } _ => { println!("{:?}", &event); } } } Ok(()) }