Phoenix WebSockets under a Microscope
Phoenix creator here. Happy to answer any questions. This article does an excellent job diving into the underlying details of Phoenix channels and pubsub.For those that want a thousand foot view and are curious what makes Elixir and Phoenix unique compared to other solutions, think of Phoenix channels as trivial realtime communication that is distributed out of the box. With Elixir, processes (green threads) are load balanced on both IO and CPU so no single channel client will block another, regardless of the work you may be doing. Channels are also multiplexed on a single concrete connection so the same client can be doing intensive work in one channel while receiving messages over another. The runtime is also distributed, so process messages can reach any server in the cluster which is what allows you to `broadcast(socket, "event", msg)` in a channel and it Just Works across the cluster.