> How much interoperability testing have you done?
We use rsocket-cpp, rsocket-js, and rsocket-java together. C++ as both client and server. JS as a client against C++ and Java, and recently starting to be a server (but that's less tested). Java as client against C++, and as server for JS.
We use TCP, WebSocket, and a single HTTP/2 stream on a shared connection in different places as the transport.
- For server-to-server we primarily use TCP.
- For browser-to-server we use WebSocket.
- For mobile-to-server we use a single H2 stream for RSocket on a potentially hared H2 connection.
- For mobile-to-server we are evaluating mapping RSocket streams onto HTTP/2 streams, while being multitenant with other protocols on the same HTTP/2 connection.
- Both approaches with HTTP/2 do not work with standard HTTP/2 APIs and only work because we expose internals of the protocol in our implementation. The mapping to H2 streams and being multi-tenant also requires custom extensions to H2 so isn't viable broadly (unless we evolve H2). And the H2 mapping does not work in browsers, so we use WebSockets there.