Stream
Stream
Schema-defined typed binary channels multiplexed over two shared remotes. No JSON, no Base64. Both server and client define identical channels — IDs are hash-derived from the channel name so there is no ordering dependency between registration calls.
Import
local Stream = RoExpress("Stream")
definition
Schema
Compile a typed binary schema from an ordered field list. Fixed-size schemas enable delta compression. 20+ built-in wire types from u8 to CFrame.
Stream.Schema.New · field types
→
channels
Channels
Define typed channels with optional rate limiting and reliability. Subscribe with
On or Once — both return an unsubscribe function.
Stream.Channel · Stream.Init · channel:On · channel:Once
→
server
Server Side
Send to one player, exclude a player, broadcast to all, or use delta compression to send only changed bytes. Per-channel rate limiting is server-side only.
SendTo · SendExcept · Broadcast · SendToDelta
→
client
Client Side
Fire typed binary packets to the server and subscribe to server-broadcast state. Built-in sequence numbers drop out-of-order unreliable packets automatically.
channel:Send · channel:On · throttling
→
guide
FPS Guide
End-to-end walkthrough for building a movement replication system with lag compensation, history buffers, and delta-compressed broadcasts at 30 Hz.
lag compensation · history buffer
→
soon
Benchmarks
Wire-size comparison across schema types, delta savings over repeated sends, and bandwidth vs vanilla RemoteEvent at various update rates.
bandwidth · delta savings
→
See also
Broadcast | simpler unreliable events when binary encoding isn't needed · Listener | receive Broadcast fan-out on the client · Codec | LZH compression for large non-binary payloads · TokenBucket | rate limiting (Stream has per-channel limits built in) · Migration Guide | v2 → v3 schema changes