Manages heartbeat lifecycle for WebSocket connections.
Pure functional module - state ownership stays with Client GenServer. Timer ownership stays with Client (Process.send_after needs self()).
API Functions
| Function | Arity | Description | Param Kinds |
|---|---|---|---|
get_health | 1 | Return heartbeat health metrics. | state: value |
send_heartbeat | 1 | Send platform-specific heartbeat message. | state: value |
handle_message | 2 | Route incoming heartbeat message to platform-specific handler. | msg: value, state: value |
cancel_timer | 1 | Cancel active heartbeat timer. Call on disconnect/error. | state: value |
start_timer | 1 | Start heartbeat timer if configured. Call on connection upgrade. | state: value |
Summary
Types
Health metrics returned by get_health/1
Heartbeat configuration - disabled or platform-specific config map
Client state map containing heartbeat fields (subset of Client.state)
Functions
Cancels active heartbeat timer. Call on disconnect/error.
Returns heartbeat health metrics map.
Routes incoming heartbeat messages to platform-specific handlers.
Sends platform-specific heartbeat message.
Starts heartbeat timer if configured. Call on connection upgrade.
Types
@type health() :: %{ active_heartbeats: [term()], last_heartbeat_at: integer() | nil, failure_count: non_neg_integer(), config: heartbeat_config(), timer_active: boolean() }
Health metrics returned by get_health/1
Heartbeat configuration - disabled or platform-specific config map
@type state() :: %{ :heartbeat_config => heartbeat_config(), :heartbeat_timer => reference() | nil, :heartbeat_failures => non_neg_integer(), :active_heartbeats => MapSet.t(), optional(:heartbeat_ping_payload) => binary() | nil, optional(:heartbeat_ping_sent_at) => integer() | nil, optional(atom()) => term() }
Client state map containing heartbeat fields (subset of Client.state)
Functions
Cancels active heartbeat timer. Call on disconnect/error.
Returns updated state with timer and failure count reset.
Returns heartbeat health metrics map.
Routes incoming heartbeat messages to platform-specific handlers.
Returns updated state after processing heartbeat.
Sends platform-specific heartbeat message.
Returns updated state with outbound heartbeat tracking for known types. Returns unchanged state for unrecognized or disabled configs.
Starts heartbeat timer if configured. Call on connection upgrade.
Returns updated state with timer reference.