There are a few main channel topologies:
- One-to-one or unicast (can be unidirectional or bidirectional)
- e.g. in 1-1 chat or private chat
- One-to-many or broadcast (fan out)
- e.g. announcements, a live poll, audience participation, firmware update, etc.
- Many-to-many or multicast
- Many-to-one or consolidation (fan in)
- e.g. IoT, sensor data, telemetry, a live poll, audience participation
Each channel topology has multiple ways of being implemented. For example, for one-to-one chat, each user can:
- publish and subscribe to a common channel ‘userA_userB-ch’
- subscribe to their own private channels, but publish to the opposite person’s channel
- e.g. user A subscribes to ‘userA-ch’ and publishes to ‘userB-ch’, while user B subscribes to ‘userB-ch’ and publishes to ‘userA-ch’
- a combination of A & B for ease of history retrieval
- e.g. user A subscribes to ‘userA-ch’ and publishes to ‘userB-ch’, while user B subscribes to ‘userB-ch’ and publishes to ‘userA-ch’, and both users also publish to ‘userA_userB-ch’
While architecture may vary depending on the use case and application requirements, we have created some general design patterns outlining best practices. We also have architecture resources – architecture reviews, consultants, solution architects, partners, etc. – available for those interested.