Skip to main content

server/
server.rs

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}