I have the following scenario:

Up to 1000 client users.
1 Server (or multiple instances of a server).

The server(s) read a set of 5-15 incoming data feeds that update as often as 10 to 50 times per second. Each feed is updating at a different interval, as information comes in (essentially random).

The server processes the data as it arrives from these feeds and when it finds a useful piece of information, it sends a message to some subset of the 1000 clients.

The clients are not all interested in the same thing. It could be that each client has a different interest, and it could be that many times per second each client will need to be notified of that interest. That should be the worst case scenario, as meaningful changes in information probably won't require updates to the client that often, even though the 5-15 feeds are constantly updating.

So what is the best way to structure this design using ASIO? Should the 1000 clients actually be set up as servers, and the server really just contact them by connecting each time there is an update that interest them?

Or should the 1000 clients all connect with a permanent connection, polling for updates?

Thanks for any advice.