How it works: video chat with a server
Although TRVCamSender and TRVCamReceiver can be directly connected to each other, this type of connection is not very convenient to connect multiple clients, because you need to implement many features yourself: maintaining a list of clients, resending received data to another clients, etc.
To solve these problems, we implemented a server component: TRVMediaServer.
TRVMediaServer can receive data (video, audio, files, commands, etc.) from multiple senders and send them to multiple receivers. It implements several mechanisms allowing to determine which receivers receive data from each sender: private communications, groups, personal lists of allowed senders, personal lists of default receivers.
Each client of a server may consist of one more more TRVCamSenders and a single TRVCamReceiver. Multiple senders are useful to implement sending different types of data using different protocols (video and audio using UDP, other data using TCP).