RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets, and Aeron.
It enables the following symmetric interaction models via async message passing over a single connection:
It supports session resumption, to allow resuming long-lived streams across different transport connections. This is particularly useful for mobile⬄server communication when network connections drop, switch, and reconnect frequently.
Detailed information can be found in these documents:
Join the RSocket Community Forums to learn more about RSocket, get your RSocket questions answered, and interact with other RSocket developers.
Following is a brief example of a server and client in Java:
Example Java Server:
RSocketFactory.receive() .frameDecoder(Frame::retain) .acceptor(new PingHandler()) .transport(TcpServerTransport.create(7878)) .start() .block() .onClose();
Example Java Client:
Mono<RSocket> client = RSocketFactory.connect() .frameDecoder(Frame::retain) .transport(TcpClientTransport.create(7878)) .start(); PingClient pingClient = new PingClient(client); Recorder recorder = pingClient.startTracker(Duration.ofSeconds(1)); int count = 1_000; pingClient .startPingPong(count, recorder) .doOnTerminate(() -> System.out.println("Sent " + count + " messages.")) .blockLast();