RSocket
Типпрограмне забезпечення
Ліцензія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

Приклад Сервера[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();

Приклад Сервера

// 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);
  1. Motivations | RSocket. rsocket.io (англ.). Процитовано 14 січня 2023.
  2. Implementations | RSocket. rsocket.io (англ.). Процитовано 14 січня 2023.
  3. RSocket, RSocket, 12 січня 2023, процитовано 14 січня 2023