In the search for a good transport for ILP packets (and other things between components in an ILP architecture) I came across rsocket.
In the various experiments I have done so far I have come across all of the issues that this protocol neatly solves.
Things I really like:
- it uses any (TCP. WebSockets, HTTP2 etc) bidirectional transport to support a variety of interaction models (request/response, event, subscribe/stream, channel) in BOTH directions.
- it allows for different transports and avoids duplicating functions provided by the transport (e.g. no frame length in header when sent over WebSockets)
- supports Reactive backpressure
In short this is a protocol designed to do Reactive Streams over network boundaries.
I loved this video https://www.youtube.com/watch?v=e-N4BchYXws
We’ll be doing some experiments with sending ILP packets over rsocket and also using it for some interfaces between components like Rafiki and our SE and report back!