add circle rhai repl and backend start cmd
This commit is contained in:
43
rhai_repl_cli/examples/connect_and_play.rs
Normal file
43
rhai_repl_cli/examples/connect_and_play.rs
Normal file
@@ -0,0 +1,43 @@
|
||||
use circle_client_ws::CircleWsClient;
|
||||
use std::env;
|
||||
use tracing_subscriber::EnvFilter;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
tracing_subscriber::fmt()
|
||||
.with_env_filter(EnvFilter::from_default_env().add_directive("connect_and_play=info".parse().unwrap()).add_directive("circle_client_ws=info".parse().unwrap()))
|
||||
.init();
|
||||
|
||||
let args: Vec<String> = env::args().collect();
|
||||
let ws_url = args.get(1).cloned().unwrap_or_else(|| {
|
||||
let default_url = "ws://127.0.0.1:8081/ws".to_string();
|
||||
println!("No WebSocket URL provided. Defaulting to: {}", default_url);
|
||||
default_url
|
||||
});
|
||||
|
||||
println!("Attempting to connect to {}...", ws_url);
|
||||
let mut client = CircleWsClient::new(ws_url.clone());
|
||||
|
||||
if let Err(e) = client.connect().await {
|
||||
eprintln!("Failed to connect to {}: {}", ws_url, e);
|
||||
return Err(e.into());
|
||||
}
|
||||
println!("Connected to {}!", ws_url);
|
||||
|
||||
let script = "let a = 10; let b = 32; let message = \"Hello from example script!\"; message + \" Result: \" + (a + b)";
|
||||
println!("\nSending script:\n```rhai\n{}\n```", script);
|
||||
|
||||
match client.play(script.to_string()).await {
|
||||
Ok(play_result) => {
|
||||
println!("\nServer response:\nOutput: {}", play_result.output);
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("\nError executing script: {}", e);
|
||||
}
|
||||
}
|
||||
|
||||
client.disconnect().await;
|
||||
println!("\nDisconnected from {}.", ws_url);
|
||||
|
||||
Ok(())
|
||||
}
|
Reference in New Issue
Block a user