I've already explained how the Gateway works, in
THIS thread.
I've also explained the drawbacks of using Delayed Calls in that same thread.
Here is a copy/paste of my explanation from that thread ...
---
When you are working with the TRtcGateway component, each Client will establish two connections with the Server, one connection used exclusively for sending data from the Client to the Server and the other connection used only for sending data from the Server to one or more Clients and displatching the same packet to multiple Clients in a group, while keeping different Clients connection speeds in mind. A custom protocol was designed to allow individual packets sent from any Client to be split into smaller packet for faster sending and to reduce memory usage on the Server, so the Server will require less memory, data will be dispatched faster, negative latency effects and TCP/IP overhead will be minimized and there is no need for manual coding. It is a general-purpose Gateway component, which only handles packet dispatching.
RTC Delayed Calls, on the other hand, were introduced as a simple way to allow the Server to respond to Remote Function Calls later if data is not available immediately when a call comes in. It can be used for a lot of things where data polling is needed. Client sends a request to the Server, the Server checks if there is any data available, puts the connection to "sleep" until data is ready, "wakes" the connection up and sends a response back when there is something to send. While this also works for message dispatching (as shown in the RTC Messenger Client/Server example), every piece of data being sent from the Server to the Client requires a trip back and fort. It is not a continuous stream in one direction, as with the TRtcGateway component. This means that latency (PING times) will be playing an important role for the performance. Also, because Delayed Calls are there for use with remote functions (which are very flexible but require additional memory and a rather complex parser and serializer), there will be higher CPU and Memory requirements than using the TRtcGateway component.
In short, TRtcGateway is highly optimized and designed from ground up for message dispatching. Even dispatching larger packets (up to 16MB) between Clients would only require a few KB of RAM on the Server. Delayed Calls give you more freedom, but require more bandwidth, have negative latency effects, require more Server resources, with "user code" being an additional "risk factor" to further reduce performance and increase Server resource requirements.
---
Anyway ... I think you should decide for yourself what approach you want to go with, because (A) we are already running in circles and (B) this is a general technical support forum and not a forum for design consulting
So ... if you are still undecided, then I can only advise you to read the threads again, weigh the good and the bad sides of available options (periodic polling, remote functions with delayed calls or the Gateway), then make a decision which you can stick to, without asking more questions. I can not tell you about all the possible problems you might encounter in your Project. If you want to be sure that everything will be working without any problems, then you will need to run your own tests, because the functionality of anything which is NOT strictly out-of-the-box (like the TRtcGateway component without any user code) will largely depend on your own code.
Best Regards,
Danijel Tkalcec