-
Notifications
You must be signed in to change notification settings - Fork 167
RSocket CLI
RSocket命令行应用,主要是帮助开发者快速进行RSocket相关的测试。
你可以在 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(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 '["*"]'
如果你想在JetBrains IDE中测试RSocket服务,那么你可以使用RSocket JetBrains plugin,对应的介绍请访问:https://plugins.jetbrains.com/plugin/18195-rsocket-requests-in-http-client
RSocket的Golang和Rust SDK,除了实现通讯协议外,也提供了对命令行的支持,但是主要是用于SDK开发测试。
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(https://jbang.dev/)是将Java作为脚本运行的命令行工具,你可以使用jbang来调用和测试你的RSocket服务。请参考样例: https://github.com/alibaba/alibaba-rsocket-broker/tree/master/alibaba-rsocket-core/src/test/jbang
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
- Binary: byte stream
- Async message
- Multi transports
- Reactive Semantics
- request/response
- request/stream
- fire-and-forget
- channel
- TCP+TLS
- WebSocket+TLS
- UDP(Aeron)
- RDMA