What are the Phoenix Channels?

Phoenix Channels

Phoenix Channels can build bi-directional communication between message senders and receivers using channels. They are ideal for real-time applications.

Sending and receiving messages is the basic concept of channels. Senders send out messages on a variety of themes. Topics must be subscribed to in order for recipients to receive messages.

Phoenix Channels are a collection of components that work together to provide real-time web capabilities across a distributed system.

Channels structure

A channel’s construction is fairly basic. Channels allow clients to connect to a web server and subscribe to numerous “topics” at a high level. The client then transmits and receives messages over the topics to which it has subscribed. On a single connection, a client may subscribe to as many topics as they like, reducing the number of costly connections. Channels are also transported agnostic, which implies that the same logic may be used by two systems, one using long-polling and the other using WebSockets.

How Phoenix Channels work

Phoenix Channels are made up of two parts:

  • Establishing a socket connection between client and server
  • Broadcasting messages between senders and recipients

Establishing a socket connection

The client will first establish a connection to a socket using one of two methods:

  • WebSockets
  • lengthy polling

Long polling necessitates the creation of JS code that pings the server at regular intervals, looking for changes. WebSockets enable bi-directional communication between the client and the server. After connecting to the socket, the client utilizes the network connection to join a channel. Then, the Phoenix.Channel.Server is used to represent this relationship.

Phoenix Channels creates an instance of percent (Phoenix.Socket) when a client successfully establishes this connection. The channel server keeps track of this socket instance and calls socket.assign to keep the state within that instance.

Broadcasting messages

A client who connects to a channel through a socket will use the channel to send a message to the channel server process. The message is broadcast out to the local PubSub server after it is received by the channel server process. This channel server function then transmits the message to any clients on the same server that are connected to the same channel topic. The message is then forwarded by the PubSub server to any distant PubSub servers operating on other nodes in the cluster. These PubSub servers then deliver it to their own subscribing clients.

Copyright ©2024 Educative, Inc. All rights reserved