A channel declares which topic should be joined, registers event handlers and has various callbacks for possible lifecycle events.
Topic of channel
Initialize a channel to a given topic.
init "room:lobby"Attach a payload to the join message. You can use this to submit e.g. a user id or authentication infos. This will be the second argument in your join/3 callback on the server.
payload =
Json.Encode.object [("user_id", "123")]
init "room:lobby"
|> withPayload payloadRegister an event handler for a event.
type Msg = NewMsg Value | ...
init "roomy:lobby"
|> on "new_msg" NewMsgSet a callback which will be called after you sucessfully joined the channel. It will also be called after you rejoined the channel after a disconnect unless you specified an onRejoin handler.
type Msg =
IsOnline Json.Encode.Value | ...
init "room:lobby"
|> onJoin IsOnlineSet a callback which will be called after you request to join the channel.
type Msg =
JoinLobbyRequested
init "room:lobby"
|> onRequestJoin JoinLobbyRequestedSet a callback which will be called if the server declined your request to join the channel.
type Msg =
CouldNotJoin Json.Encode.Value | ...
init "room:lobby"
|> onJoinError CouldNotJoinNote: If a channel declined a request to join a topic the effect manager won_t try again.
Set a callback which will be called if the channel process on the server crashed. The effect manager will automatically rejoin the channel after a crash.
type Msg =
ChannelCrashed | ...
init "room:lobby"
|> onError ChannelCrashedSet a callback which will be called after you sucessfully left a channel.
type Msg =
LeftLobby Json.Encode.Value | ...
init "room:lobby"
|> onLeave LeftLobbySet a callback which will be called if the server declined your request to left a channel. _(It seems that Phoenix v1.2 doesn_t send this)_
Print all status changes.
Set a callback which will be called when there is a change in the presence state caused by "presence_state" and "presence_diff" events.
type Msg =
PresenceChange (Dict String (List Json.Encode.Value)) | ...
init "room:lobby"
|> onPresenceChange PresenceChangeComposes each callback with the function a -> b.
Representation of a Phoenix Channel