ChannelClient. Channel
(channel_client v0.1.1)
Copy Markdown
A client process bound to one channel topic on a ChannelClient.Socket.
Joining links the caller to the channel process; broadcasts and pushes
from the server are forwarded to the caller as %ChannelClient.Message{}
structs. Replies to synchronous pushes resolve as {status, response}
tuples, where status is :ok, :error or :timeout.
Summary
Functions
Returns a specification to start this module under a supervisor.
Join a channel topic through a socket with optional params.
Leave the channel topic and stop the channel.
Push a message to the server and wait for a reply or until timeout.
Push a message to the server and do not wait for a response.
Functions
@spec child_spec({pid() | atom(), String.t(), map()}) :: Supervisor.child_spec()
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec join(pid() | atom(), String.t(), map(), non_neg_integer()) :: {:ok, map(), pid()} | {:error, :socket_not_started} | {:error, :socket_not_connected} | {:error, :timeout} | {:error, any()}
Join a channel topic through a socket with optional params.
A socket can only join a topic once. If the socket you pass already has a
channel connection for the supplied topic, you will receive an error
{:error, {:already_joined, pid}} with the channel pid of the process
joined to that topic through that socket. If you require to join the same
topic with multiple processes, you will need to start a new socket process
for each channel.
Calling join will link the caller to the channel process.
@spec leave(pid()) :: :ok
Leave the channel topic and stop the channel.
Always returns :ok, even when the channel process is already gone.
Push a message to the server and wait for a reply or until timeout.
The server must be configured to return {:reply, _, socket} otherwise,
the call will timeout. Payloads must be encodable by the configured JSON
library; unencodable payloads return {:error, reason} immediately.
Push a message to the server and do not wait for a response.
Replies from the server are delivered to the caller's mailbox as a
%ChannelClient.Message{} with event "phx_reply".