Phoenix's real-time application support relies on two major core components in Phoenix: channels and topics. The general idea is that for a real-time application to be able to accurately broadcast out every message to the right parties (and for it to be able to understand messages that are sent in as well), Phoenix needs a system for how the messages get in and out. This represents our channels. Channels themselves are the Phoenix-side of sockets; where the socket represents how the information is transferred between the client and the server, the channel represents how the information hits the server and gets translated into something useful that Phoenix can work with.
In addition to that, we also need a way for the client and the server to acknowledge which messages each of them cares about. The server needs to understand how to route...