Expand description
Session layer (spec §8): transparent stream recovery across disconnects. Foundations: TCP seq/ack + MQTT QoS1 + SignalR buffered reconnect.
Layering: the session transport owns the Hello handshake and physical
reconnects; the frame connection is brought up via bind_pre_negotiated
and lives on top of the changing physical connections, noticing nothing.
Known limitation: Ping/Pong is outside the session — a ping lost in a disconnect hangs; ping is liveness of one physical connection, not the session.
Modules§
- client
- Client-side session transport: a Frame duplex that internally handles
physical reconnects, the resume handshake, replay and dedup. The logical
connection (
bind_pre_negotiated) on top notices nothing. - core
- Sans-io session core: sequencing, replay buffer, dedup, Ack cadence. Used by both sides; knows nothing about transports or timers.
- server
- Server side of the session layer: session manager + a transport living on top of changing physical connections. Native-only (in-memory state, tokio TTL). Behind a load balancer, sticky sessions are required (spec §8).