Skip to content
This repository has been archived by the owner on Jul 16, 2024. It is now read-only.

RSocket CLI

linux_china edited this page Jan 13, 2021 · 8 revisions

RSocket命令行应用,主要是帮助开发者快速进行RSocket相关的测试。

rsocket-cli

你可以在 https://github.com/rsocket/rsocket-cli 找到,RSocket是官方开发,提供了非常完善的四个通讯模式支持,而且和官方同步也快。

$ rsocket-cli -i "I am a Server" --server --debug tcp://localhost:8765  # window 1
$ rsocket-cli --request -i "I am a Client" --debug tcp://localhost:8765 # window 2

rsc

rsc是另外一个命令行工具,主要是基于Spring Boot开发,而且和GraalVM整合比较好,提供Native二进制的支持,不需要你安装JDK,就可以运行。

rsc是基于Spring Boot开发,所以直接可以测试Spring Boot编写的服务,如支持RSocket的路由。

rsc tcp://localhost:8080 --request --route hello -d Foo --debug

rsc的站点为: https://github.com/making/rsc

Alibaba RSocket Broker提供对rsc的定制版本,地址 https://github.com/alibaba-rsocket-broker/rsc 再编译后,你可以使用以下命令进行测试:

$ rsc tcp://localhost:9999 --request --route com.alibaba.WordService.uppercase -d '["hello"]' --setupMetadata  '{"ip":"127.0.0.1","name":"MockApp","sdk":"SpringBoot/2.3.7","device":"JavaApp"}' --setupMetadataMimeType "APP_INFO" --debug

rsocket-go & rsocket-rust

RSocket的Golang和Rust SDK,除了实现通讯协议外,也提供了对命令行的支持,但是主要是用于SDK开发测试。

rsocket-deno

rsocket-deno是为Deno提供基于RSocket通讯协议支持,但是由于deno在命令行方面有非常好的支持, 如果你对TypeScript稍微了解,只需稍微编写点代码,就可以完成功能,和Golang和Rust不一样, rsocket-deno是基于TypeScript脚本语言的,改起来也快。

import {
    RSocketConnector,
    Payload
} from "https://deno.land/x/rsocket/mod.ts"

const rsocket = await RSocketConnector.create().connect("tcp://127.0.0.1:42252");

const result = await rsocket.requestResponse(Payload.fromText("Hello, I'm requester!", ""));
console.log(result.getDataUtf8());

jbang

jbang(https://jbang.dev/)是将Java作为脚本运行的命令行工具,你可以使用jbang来调用和测试你的RSocket服务。请参考样例: https://github.com/alibaba/alibaba-rsocket-broker/tree/master/alibaba-rsocket-core/src/test/jbang

RSocket

Network Protocol

  • Binary: byte stream
  • Async message
  • Multi transports
  • Reactive Semantics

Symmetric interactions

  • request/response
  • request/stream
  • fire-and-forget
  • channel

Transports

  • TCP+TLS
  • WebSocket+TLS
  • UDP(Aeron)
  • RDMA

Polyglot

Clone this wiki locally