Canalis.Ws.Keepalive est ritmus vitalis connectionis websocket.
This layer maintains liveness cadence through ping/pong timing. It separates temporal continuity from message semantics.
Its concern is persistence of channel life, not payload meaning.
Summary
Functions
Cancel keepalive timer.
Handle pong response from server.
Initialize keepalive timer in state.
Send ping frame and reschedule next ping.
Functions
Cancel keepalive timer.
Called during shutdown/termination.
Handle pong response from server.
Logs pong receipt. State unchanged (no action needed).
Initialize keepalive timer in state.
Schedules first ping and stores timer reference in state.
Returns state with :ping_timer field.
Send ping frame and reschedule next ping.
Returns updated state with new timer reference.