Crate rapids

Source
Expand description

Crates.io Version docs.rs License: AGPL-3.0-only

§Rapids

An alpha server implementation of the River protocol in rust.

§Feature Support

FeatureSupportComments
River Server✔️
River Client
Pluggable Codecs✔️JSON and MessagePack codecs are provided as well as support for custom codecs
Pluggable TransportsWebSocket support is hardcoded in with no other transport options yet
rpc procedures✔️
upload procedures✔️
subscription proceduresMostly supported, however server-side close semantics are not fully correct
stream proceduresMostly supported, however server-side close semantics are not fully correct
Transparent ReconnectionSee #1
Strong Typing for proceduresCurrently only message headers and control messages are strongly typed, procedures get dynamic values
HeartbeatsServer sends heartbeats but does not deal with unresponsive clients yet
Error RecoveryUnwrap is still widely used internally, better error handling using thiserror (instead of anyhow) is needed
Handshake Metadata Validation

§⚠️ Weird API Parts

§Result Types

This library contains two result types used with the River protocol. Information on which to use can be found in the docs for types::result. While information on why there are two can be found in the types page.

Modules§

codecs
Built-in codecs
dispatch
Dispatcher and WebSocket River server implementation
types
River implementation types
utils
Useful functions for River implementations

Constants§

PROTOCOL_VERSION
The protocol version currently supported by this library. At the moment this is v2.0