RSocket

{{Short description|Application protocol that supports Reactive Streams}}

{{Infobox software

| title = RSocket

| name =

| genre = Reactive Streams networking

| license = Apache License

| released = {{Start date and age|2015|10|26|df=yes}}

| programming language = Java, JavaScript, Kotlin, C#, Go, C++, Python

| website = {{URL|https://rsocket.io/}}

| repo = {{URL|https://github.com/rsocket}}

}}

{{Portal|Free and open-source software}}

RSocket is an application protocol initially developed by [https://www.netflix.com/ Netflix],{{cite web|url=https://lmonkiewicz.com/posts/a-summary-of-code-europe-2017-in-warsaw/|title=A summary of Code Europe 2017 in Warsaw|first= Łukasz|last=Monkiewicz|date=June 4, 2017|website=lmonkiewicz.com |publisher= |access-date=May 7, 2017}} that supports Reactive Streams. The motivation behind its development was to replace HTTP, which is inefficient for many tasks such as microservices communication, with a protocol that has less overhead.{{cite web|url=https://github.com/rsocket/rsocket/blob/master/Motivations.md|title=Motivations|first= Ben|last=Christensen|date=Apr 3, 2017|website=github.com |publisher= |access-date=May 7, 2017}}

Protocol

RSocket is a binary protocol for use on byte stream transports such as TCP and WebSocket. It enables the following symmetric interaction models via async message passing over a single connection:

  • request/response (stream of 1)
  • request/stream (finite stream of many)
  • fire-and-forget (no response)
  • channel (bidirectional streams)

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.

References

{{reflist}}