rsocket-rust

logo

Crates.io Crates.io License GitHub Release

rsocket-rust is an implementation of the RSocket protocol in Rust.
It is under active development. Do not use it in a production environment.

Example

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

Server

```rust extern crate bytes; extern crate futures; extern crate rsocket_rust;

use bytes::Bytes; use futures::prelude::; use rsocket_rust::prelude::;

[test]

fn testserve() { RSocketFactory::receive() .transport(URI::Tcp("127.0.0.1:7878")) .acceptor(|setup, sendingsocket| { println!("accept setup: {:?}", setup); // TODO: use tokio runtime? std::thread::spawn(move || { let resp = sendingsocket .requestresponse( Payload::builder() .set_data(Bytes::from("Hello Client!")) .build(), ) .wait() .unwrap(); println!(">>>>> response success: {:?}", resp); }); Box::new(MockResponder) }) .serve() .wait() .unwrap(); }

```

Client

```rust extern crate futures; extern crate rsocket_rust;

use futures::prelude::; use rsocket_rust::prelude::;

[test]

fn testclient() { let cli = RSocketFactory::connect() .acceptor(||Box::new(MockResponder)) .transport(URI::Tcp("127.0.0.1:7878")) .setup(Payload::from("READY!")) .mimetype("text/plain", "text/plain") .start() .unwrap(); let pa = Payload::builder() .setdatautf8("Hello World!") .setmetadatautf8("Rust!") .build(); let resp = cli.request_response(pa).wait().unwrap(); println!("* response: {:?}", resp); } ```

Dependencies

  1. Tokio
  2. futures-rs

TODO