Whether you use private or public messaging will depend on your use case. However, logic around channels might provide some guidance. A private channel can not be seen or joined by non-members, only via REST. Members of private channel can add non-members.
A public channel is seen and can be joined by non-members. Additionally, the public channel, along with its members and messages, is visible to every client endpoint in a given service SID. This means that synchronizing channels lists on client start may take more time when you have a large number of public channels. Because of this, we recommend creating private channels, as they are visible only to participants, and will decrease channel synchronization time at client start.