A channel declares which topic should be joined, registers event handlers and has various callbacks for possible lifecycle events.
PhoenixChannel msg
Representation of a Phoenix Channel
String
Topic of channel
init : Topic -> Channel msg
Initialize a channel to a given topic.
init "room:lobby"
withPayload : Json.Decode.Value -> Channel msg -> Channel msg
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 payload
on : String -> (Json.Decode.Value -> msg) -> Channel msg -> Channel msg
Register an event handler for a event.
type Msg = NewMsg Value | ...
init "roomy:lobby"
|> on "new_msg" NewMsg
onJoin : (Json.Decode.Value -> msg) -> Channel msg -> Channel msg
Set 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 IsOnline
onRequestJoin : msg -> Channel msg -> Channel msg
Set a callback which will be called after you request to join the channel.
type Msg =
JoinLobbyRequested
init "room:lobby"
|> onRequestJoin JoinLobbyRequested
onJoinError : (Json.Decode.Value -> msg) -> Channel msg -> Channel msg
Set 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 CouldNotJoin
Note: If a channel declined a request to join a topic the effect manager won_t try again.
onError : msg -> Channel msg -> Channel msg
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 ChannelCrashed
onLeave : (Json.Decode.Value -> msg) -> Channel msg -> Channel msg
Set a callback which will be called after you sucessfully left a channel.
type Msg =
LeftLobby Json.Encode.Value | ...
init "room:lobby"
|> onLeave LeftLobby
onLeaveError : (Json.Decode.Value -> msg) -> Channel msg -> Channel msg
Set 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)_
withDebug : Channel msg -> Channel msg
Print all status changes.
withPresence : Phoenix.Presence.Presence msg -> Channel msg -> Channel msg
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 PresenceChange
map : (a -> b) -> Channel a -> Channel b
Composes each callback with the function a -> b
.