@@ -6,63 +6,78 @@ Add dependencies in your `Cargo.toml`.
6
6
7
7
``` toml
8
8
[dependencies ]
9
- tokio = " 0.2.11"
10
- rsocket_rust = " 0.5.0"
11
-
12
- # choose transport:
13
- # rsocket_rust_transport_tcp = "0.5.0"
14
- # rsocket_rust_transport_websocket = "0.5.0"
9
+ tokio = " 0.2.16"
10
+ rsocket_rust = " 0.5.1"
11
+ rsocket_rust_transport_websocket = " 0.5.1"
15
12
```
16
13
17
14
### Server
18
15
19
16
``` rust
20
- use rsocket_rust :: prelude :: * ;
17
+ use log :: info;
18
+ use rsocket_rust :: prelude :: {EchoRSocket , RSocketFactory , ServerResponder };
21
19
use rsocket_rust_transport_websocket :: WebsocketServerTransport ;
22
- use std :: env;
23
20
use std :: error :: Error ;
24
21
25
22
#[tokio:: main]
26
23
async fn main () -> Result <(), Box <dyn Error + Send + Sync >> {
24
+ let transport : WebsocketServerTransport = WebsocketServerTransport :: from (" 127.0.0.1:8080" );
25
+
26
+ let responder : ServerResponder = Box :: new (| setup , _socket | {
27
+ info! (" accept setup: {:?}" , setup );
28
+ Ok (Box :: new (EchoRSocket ))
29
+ // Or you can reject setup
30
+ // Err(From::from("SETUP_NOT_ALLOW"))
31
+ });
32
+
33
+ let on_start : Box <dyn FnMut () + Send + Sync > =
34
+ Box :: new (|| info! (" +++++++ echo server started! +++++++" ));
35
+
27
36
RSocketFactory :: receive ()
28
- . transport (WebsocketServerTransport :: from (" 127.0.0.1:8080" ))
29
- . acceptor (| setup , _socket | {
30
- println! (" accept setup: {:?}" , setup )
31
- Ok (Box :: new (EchoRSocket ))
32
- // Or you can reject setup
33
- // Err(From::from("SETUP_NOT_ALLOW"))
34
- })
35
- . on_start (|| println! (" +++++++ echo server started! +++++++" ))
37
+ . transport (transport )
38
+ . acceptor (responder )
39
+ . on_start (on_start )
36
40
. serve ()
37
- . await
41
+ . await ? ;
42
+
43
+ Ok (())
38
44
}
39
45
40
46
```
41
47
42
48
### Client
43
49
44
50
``` rust
45
- use rsocket_rust :: prelude :: * ;
51
+ use log :: info;
52
+ use rsocket_rust :: prelude :: {ClientResponder , EchoRSocket , Payload , RSocket , RSocketFactory };
46
53
use rsocket_rust_transport_websocket :: WebsocketClientTransport ;
54
+ use std :: error :: Error ;
47
55
48
56
#[tokio:: main]
49
- #[test]
50
- async fn test () {
51
- let cli = RSocketFactory :: connect ()
52
- . acceptor (|| Box :: new (EchoRSocket ))
57
+ async fn main () -> Result <(), Box <dyn Error + Send + Sync >> {
58
+ let responder : ClientResponder = Box :: new (|| Box :: new (EchoRSocket ));
59
+
60
+ let client = RSocketFactory :: connect ()
61
+ . acceptor (responder )
53
62
. transport (WebsocketClientTransport :: from (" 127.0.0.1:8080" ))
54
63
. setup (Payload :: from (" READY!" ))
55
64
. mime_type (" text/plain" , " text/plain" )
56
65
. start ()
57
66
. await
58
67
. unwrap ();
59
- let req = Payload :: builder ()
68
+
69
+ let request_payload : Payload = Payload :: builder ()
60
70
. set_data_utf8 (" Hello World!" )
61
71
. set_metadata_utf8 (" Rust" )
62
72
. build ();
63
- let res = cli . request_response (req ). await . unwrap ();
64
- println! (" got: {:?}" , res );
65
- cli . close ();
73
+
74
+ let res = client . request_response (request_payload ). await . unwrap ();
75
+
76
+ info! (" got: {:?}" , res );
77
+
78
+ client . close ();
79
+
80
+ Ok (())
66
81
}
67
82
68
83
```
0 commit comments