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 Dec 21, 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(https://github.com/making/rsc)是另外一个命令行工具,主要是基于Spring Boot开发,而且和GraalVM整合比较好,提供Native二进制的支持,不需要你安装JDK,就可以运行。

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

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

rsc 0.7.1版本添加了对Alibaba RSocket Broker的支持, 你可以使用以下命令进行测试:

$ rsc --setupMetadata '{"ip":"127.0.0.1","name":"rscCli","sdk":"SpringBoot/2.3.7","device":"JavaApp"}' --setupMetadataMimeType "APP_INFO" tcp://localhost:9999 --request --route com.alibaba.user.UserService.findById -d '[1]' --debug

如果你不想输入那么长的命令,可以考虑创建一个shell函数,如alirsc,在该函数中设置一下原型信息,如下:

alirsc() {
  rsc --setupMetadata '{"ip":"127.0.0.1","name":"MockApp","sdk":"SpringBoot/2.3.7","device":"JavaApp"}' --setupMetadataMimeType "APP_INFO" "$@"
}

然后你就可以使用alirsc,命令和rsc是完全兼容的。

alirsc tcp://localhost:9999 --request --route com.alibaba.user.UserService.findById -d '[1]' --debug
alirsc tcp://localhost:9999 --request --route com.alibaba.rsocket.discovery.DiscoveryService.getInstances -d '["*"]'

RSocket JetBrains plugin

如果你想在JetBrains IDE中测试RSocket服务,那么你可以使用RSocket JetBrains plugin,对应的介绍请访问:https://plugins.jetbrains.com/plugin/18195-rsocket-requests-in-http-client

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 Chrome Dev Tools

RSocket-JS支持在浏览器中通过WebSocket调用后端RSocket服务,如果出现一些错误,那么如何查看浏览器端到后端的RSocket的通讯情况? RSocket Chrome Dev Tools就是在Chrome中查看RSocket的通讯情况。 现在你可以通过Chrome Store进行安装 https://chrome.google.com/webstore/detail/rsocket-frame-inspector/nijdiakpmjaohioaelphnfdbdpbbgkhc 更多的信息请参考: https://github.com/rsocket/rsocket-chrome-devtools

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