RSocket
протокол з підтримкою Reactive Streams
Тип | програмне забезпечення |
---|---|
Ліцензія | Apache License |
Репозиторій | github.com/rsocket |
Вебсайт | rsocket.io |
RSocket — бінарний протокол передачі даних через потік байтів такими протоколами, як: TCP, WebSockets, та Aeron[1], розроблений Netflix. RSocket створює протокол для використання реактивних потоків (Reactive Streams) між сервером та клієнтом (client-server), та server-server сполученням. RSocket протокол може споживатися різними імплементаціями бібліотек ряду мов програмування, що реалізують протокол RSocket.
Реалізація мовами програмування
ред.В документації RSocket представлені наступні мови програмування[2]:
- Java
- Kotlin
- Go
- Rust
- C++
- TypeScript
- JavaScript
- Swift
- Python
Java
ред.Приклад Сервера[3]:
RSocketServer.create(new PingHandler())
.payloadDecoder(PayloadDecoder.ZERO_COPY)
.bind(TcpServerTransport.create(7878))
.block()
.onClose();
Клієнт:
Mono<RSocket> client =
RSocketConnector.create()
.payloadDecoder(PayloadDecoder.ZERO_COPY)
.connect(TcpClientTransport.create(7878));
PingClient pingClient = new PingClient(client);
Recorder recorder = pingClient.startTracker(Duration.ofSeconds(1));
int count = 1_000;
pingClient
.requestResponsePingPong(count, recorder)
.doOnTerminate(() -> System.out.println("Sent " + count + " messages."))
.blockLast();
C++
ред.Приклад Сервера
// RSocket server accepting on TCP
auto rs = RSocket::createServer(TcpConnectionAcceptor::create(FLAGS_port));
// global request handler
auto handler = std::make_shared<HelloStreamRequestHandler>();
// start accepting connections
rs->startAndPark([handler](auto r) { return handler; });
Приклад Клієнта:
auto rsf = RSocket::createClient(TcpConnectionFactory::create(host, port));
auto s = std::make_shared<ExampleSubscriber>(5, 6);
auto rs = rsf->connect().get();
rs->requestStream(Payload("Jane"), s);
- ↑ Motivations | RSocket. rsocket.io (англ.). Процитовано 14 січня 2023.
- ↑ Implementations | RSocket. rsocket.io (англ.). Процитовано 14 січня 2023.
- ↑ RSocket, RSocket, 12 січня 2023, процитовано 14 січня 2023