river
river copied to clipboard
🌊 Long-lived Streaming Remote Procedure Calls
- [x] Define protocol and update doc #111 - [x] Design stream abstractions #118 - [x] Implement stream abstractions - [x] ReadStream #130 - [x] WriteStream #132 - [ ]...
Exactly the same as #136 but for the server
The tsconfig is pretty stock, we should fix it. `lib` should be `[]`, and then there are some of the strict checks like `noUncheckedIndexedAccess` that we should enable. It'll lead...
https://eslint.org/docs/latest/rules/padding-line-between-statements
e.g. if a repl is taken down, we should stop retrying the connection to it
- backwards compatible - eliminate transport client id and only use session ids everywhere (messages + handshakes) - backwards incompatible - null out `to` and `from` in each message, just...
## Why Memory is not unbounded and underlying transports have limits on maximum payload size. When we accidentally exceed the max payload size for an underlying transport, the connection can...
## Why I want to start enforcing max payload size before we attempt to send the messages over the wire. Ideally we can confine these errors to be per-stream so...
Seems like we mostly decided against this ## Why ## What changed ## Versioning - [ ] Breaking protocol change - [ ] Breaking ts/js API change
## Why Fixes https://github.com/replit/river/issues/333 In streaming procedures, you often need to push an uncaught error into the stream _outside_ of the scope of the handler. This is tricky since all...