Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Websockets vs Reactive sockets

I have recently come across a term 'Reactive sockets'. Up until this point, I used to think websockets are the way to go for full fledged asynchronous style.

So what are reactive sockets.

This link (http://rsocket.io/) even talks about comparison over websockets.

like image 523
Arunkumar Srisailapathi Avatar asked Dec 09 '17 13:12

Arunkumar Srisailapathi


People also ask

Are WebSockets reactive?

WebSockets support is a part of the Reactive Messaging HTTP extension ( quarkus-reactive-messaging-http ).

Why WebSockets are not reliable?

It is worth to mention that WebSockets give us only an illusion of reliability. Unfortunately, the Internet connection itself is not reliable. There are many places when the connection is slow, devices often go offline, and in fact, there is still a need to be backed by a reliable messaging system.

What are the disadvantages of WebSockets?

The biggest downside to using WebSocket is the weight of the protocol and the hardware requirements that it brings with it. WebSocket requires a TCP implementation, which may or may not be a problem, but it also requires an HTTP implementation for the initial connection setup.

When should you not use a WebSocket?

Avoid using WebSockets if only a small number of messages will be sent or if the messaging is very infrequent. Unless the client must quickly receive or act upon updates, maintaining the open connection may be an unnecessary waste of resources.


2 Answers

What is RSocket?

RSocket implements the Reactive Streams specification over the network boundary. It is an application-level communication protocol with framing, session resumption, and backpressure built-in that works over the network.

RSocket is transport agnostic. RSocket can be run over Websockets, TCP, HTTP/2, and Aeron.

How does RSocket differ from Websockets?

Websockets do not provide application-level backpressure, only TCP-based byte-level backpressure. Websockets also only provide framing they do not provide application semantics. It is up to the developer to build out an application protocol for interacting with the websocket.

RSocket provides framing, application semantics, application-level backpressure, and it is not tied to a specific transport.

For more information on the motivations behind the creation of RSocket checkout the motivations doc on the RSocket site.

like image 79
gregwhitaker Avatar answered Oct 14 '22 02:10

gregwhitaker


Both WebSocket and RSocket are protocols which feature bi-directional, multiplex, duplex communication. But both work at different levels.

WebSocket is a low level communication protocol layered over TCP. It defines how a stream of bytes is transformed into frames. But WebSocket message itself does not have instructions about how to route or process it. Therefore, we need messaging protocols that operate on top of websocket, at application level, to achieve two-way communication.

RSocket is a fully reactive application level protocol which runs over byte stream transports such as TCP, WebSocket, UDP or other. It provides application flow control over the network to prevent outages and increase resiliency. RSocket employs the idea of asynchronous stream processing with non-blocking back-pressure, in which a failing component will, rather than simply dropping traffic, communicate its stress to upstream components, getting them to reduce the load.

like image 26
Sreejith Avatar answered Oct 14 '22 02:10

Sreejith