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

Link to this callback

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

Link to this callback

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

Link to this callback

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

@callback state_key() :: atom()
@callback state_key() :: atom()

The key on assigns to hold application state. Defaults to :state.