RSocket Core

Example

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

Dependencies

Add dependencies in your Cargo.toml.

```toml [dependencies] tokio = "0.3.6" rsocket_rust = "0.7.0"

add transport dependencies:

rsocketrusttransport_tcp = "0.7.0"

rsocketrusttransport_websocket = "0.7.0"

```

Server

```rust use rsocketrust::prelude::*; use rsocketrust::utils::EchoRSocket; use rsocketrust::Result; use rsocketrusttransporttcp::TcpServerTransport;

[tokio::main]

async fn main() -> Result<()> { RSocketFactory::receive() .transport(TcpServerTransport::from("127.0.0.1:7878")) .acceptor(Box::new(|setup, socket| { println!("accept setup: {:?}", setup); // Use EchoRSocket as example RSocket, you can implement RSocket trait. Ok(Box::new(EchoRSocket)) // Or you can reject setup // Err(From::from("SETUPNOTALLOW")) })) .onstart(|| println!("+++++++ echo server started! +++++++")) .serve() .await } ```

Client

```rust use rsocketrust::prelude::*; use rsocketrust::Result; use rsocketrusttransport_tcp::TcpClientTransport;

[tokio::main]

async fn main() -> Result<()> { let cli = RSocketFactory::connect() .transport(TcpClientTransport::from("127.0.0.1:7878")) .setup(Payload::from("READY!")) .mimetype("text/plain", "text/plain") .start() .await?; let req = Payload::builder() .setdatautf8("Hello World!") .setmetadatautf8("Rust") .build(); let res = cli.requestresponse(req).await?; println!("got: {:?}", res); cli.close(); Ok(()) }

```