1use serde::{Deserialize, Serialize};
2use session_rs::{Method, server::SessionServer};
3
4#[derive(Debug, Serialize, Deserialize)]
5struct Data;
6
7impl Method for Data {
8 const NAME: &'static str = "data";
9 type Request = String;
10 type Response = String;
11 type Error = String;
12}
13
14#[tokio::main(flavor = "current_thread")]
15async fn main() -> session_rs::Result<()> {
16 let server = SessionServer::bind("127.0.0.1:8080").await?;
17
18 server
19 .session_loop(async |session, _| {
20 session
21 .on::<Data, _>(async |_, req| {
22 println!("Msg from client: {req}");
23
24 if req == "invalid_data" {
25 return Err("Invalid data".to_string());
26 }
27
28 Ok("Hello from server".to_string())
29 })
30 .await;
31
32 Ok(())
33 })
34 .await
35}