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(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 last_heartbeat_at timestamp 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.