An Elm client for Phoenix Channels.
This package makes it easy to connect to Phoenix Channels, but in a more declarative manner than the Phoenix Socket Javascript library. Simply provide a Socket
and a list of Channel
s you want to join and this library handles the tedious parts like opening a connection, joining channels, reconnecting after a network error and registering event handlers.
Pushes a Push
message to a particular socket address. The address has to be the same as with which you initalized the Socket
in the connect
subscription.
payload =
Json.Encode.object
[ ( "msg"
, Json.Encode.string "Hello Phoenix"
)
]
message =
Push.init "room:lobby" "new_msg"
|> Push.withPayload payload
push "ws://localhost:4000/socket/websocket" message
Note: The message will be queued until you successfully joined a channel to the topic of the message.
Declare a socket you want to connect to and the channels you want to join. The effect manager will open the socket connection, join the channels. See
Phoenix.Socket
andPhoenix.Channel
for more configuration and behaviour details.import Phoenix.Socket as Socket import Phoenix.Channel as Channel type Msg = NewMsg Value | ... socket = Socket.init "ws://localhost:4000/socket/websocket" channel = Channel.init "room:lobby" -- register a handler for messages -- with a "new_msg" event |> Channel.on "new_msg" NewMsg subscriptions model = connect socket [channel]
Note: An empty channel list keeps the socket connection open.