LiveState.Channel behaviour (live_state v0.5.0)
To build a LiveState application, you'll first want to add a channel that implements this behaviour.
Link to this section Summary
Callbacks
Receives an event an payload from the client and current state. Returns the new state along with (optionally)
a single or list of LiveState.Event
to dispatch to client
Receives pubsub message and current state. Returns new state
Returns the initial application state. Called just after connection
The key on assigns to hold application state. Defaults to :state
.
Link to this section Callbacks
handle_event(event_name, payload, state)
@callback handle_event(event_name :: binary(), payload :: term(), state :: term()) :: {:reply, reply :: %LiveState.Event{detail: term(), name: term()} | [%LiveState.Event{detail: term(), name: term()}], new_state :: any()} | {:noreply, new_state :: term()}
Receives an event an payload from the client and current state. Returns the new state along with (optionally)
a single or list of LiveState.Event
to dispatch to client
handle_message(message, state)
@callback handle_message(message :: term(), state :: term()) :: {:reply, reply :: %LiveState.Event{detail: term(), name: term()} | [%LiveState.Event{detail: term(), name: term()}], new_state :: any()} | {:noreply, new_state :: term()}
Receives pubsub message and current state. Returns new state
init(channel, payload, socket)
@callback init(channel :: binary(), payload :: term(), socket :: Socket.t()) :: {:ok, state :: term()}
Returns the initial application state. Called just after connection
state_key()
The key on assigns to hold application state. Defaults to :state
.