Skip to main content

websocket/
websocket.rs

1use flyer::router::next::Next;
2use flyer::{server};
3use flyer::{request::Request, response::Response};
4use serde::{Deserialize, Serialize};
5
6#[derive(Serialize, Deserialize)]
7pub struct Message<'a> {
8    message: &'a str
9}
10
11pub async fn auth<'a>(req: &'a mut Request, res: &'a mut Response, next: &'a mut Next) -> &'a mut Response {
12    if req.header("authorization") != "jwt.token" {
13        return res;
14    }
15
16    return next.handle(res);
17}
18
19fn main() {
20    let server = server("127.0.0.1", 9999);
21
22    server.router().group("", |router| {
23        router.ws("/", async |_req, ws| {
24            ws.on(async |event, writer| {
25                match event {
26                    flyer::ws::Event::Ready() => todo!(),
27                    flyer::ws::Event::Text(_items) => writer.write("Hello This Public Route".into()),
28                    flyer::ws::Event::Binary(_items) => todo!(),
29                    flyer::ws::Event::Ping(_items) => todo!(),
30                    flyer::ws::Event::Pong(_items) => todo!(),
31                    flyer::ws::Event::Close(_reason) => todo!(),
32                }
33            });
34        });
35
36        router.ws("private", async |_req, ws| {
37            ws.on(async |event, writer| {
38                match event {
39                    flyer::ws::Event::Ready() => todo!(),
40                    flyer::ws::Event::Text(_items) => writer.write("Hello This Private Route".into()),
41                    flyer::ws::Event::Binary(_items) => todo!(),
42                    flyer::ws::Event::Ping(_items) => todo!(),
43                    flyer::ws::Event::Pong(_items) => todo!(),
44                    flyer::ws::Event::Close(_reason) => todo!(),
45                }
46            });
47        }).middleware(auth);
48    });
49
50    print!("\r\n\r\nRunning server: {}\r\n\r\n", server.address());
51
52    server.listen();
53}