What interaction styles are commonly used with publish/subscribe channels?
There are two main design patterns, each with its own pros and cons for use with clients and servers. Also, see this thread on handling private channels.
For servers: send messages on a single channel to everyone or a group. The clients receiving the messages can filter and use only the data of interest to them. This method has the advantage of being able to use a single connection (rather than multiple connections) on resource-constrained mobile devices. The disadvantage is extra network usage (sending more data to each client) and extra processing (filtering out data not needed by client). The channel in such use cases is typically referred to as a "global" or "system/admin" channel.
For clients: each client connects to a single channel on which only data relevant to that user is sent. This method is characterized by a 1:1 publish/subscribe ratio and has the advantage of minimal network usage (each client receives only the data it needs) and minimal processing (no need for filtering unneeded data). The disadvantage is that some applications require client connections to multiple channels. On mobile devices this is typically implemented as a background task or a thread per channel connection. To avoid OutOfMemory errors on low-end mobile devices and for efficient operation of browser apps, it is recommended to use Channel Multiplexing when a client needs to subscribe to multiple channels.
Mixed mode: Often, applications use a combination of the two methods, whereby each client subscribes to a global channel as well as a dedicated channel. The dedicated channel connection can intermittently switch among a list of channels according to the application's logic. This mixed design pattern is common with chat applications involving multiple chat rooms.