rsocket-rust

Crates.io Crates.io License GitHub Release

rsocket-rust is an implementation of the RSocket protocol in Rust(1.39+). It's an alpha version and still under active development. Do not use it in a production environment!

Example

Here are some example codes which show how RSocket works in Rust.

Server

```rust extern crate rsocket_rust; extern crate tokio;

[macro_use]

extern crate log; use rsocket_rust::prelude::*; use std::env; use std::error::Error;

[tokio::main]

async fn main() -> Result<(), Box> { envlogger::builder().init(); let addr = env::args().nth(1).unwrapor("127.0.0.1:7878".to_string());

RSocketFactory::receive()
    .transport(URI::Tcp(addr))
    .acceptor(|setup, _socket| {
        info!("accept setup: {:?}", setup);
        Box::new(EchoRSocket)
    })
    .serve()
    .await

} ```

Client

```rust extern crate rsocket_rust;

use rsocket_rust::prelude::*;

[tokio::main]

[test]

async fn test() { let cli = RSocketFactory::connect() .acceptor(|| Box::new(EchoRSocket)) .transport(URI::Tcp("127.0.0.1:7878".tostring())) .setup(Payload::from("READY!")) .mimetype("text/plain", "text/plain") .start() .await .unwrap(); let req = Payload::builder() .setdatautf8("Hello World!") .setmetadatautf8("Rust") .build(); let res = cli.request_response(req).await.unwrap(); println!("got: {:?}", res); cli.close(); }

```

Dependencies

TODO