You might want to consider Websockets, and since you are using C++, I highly recommend Websocketpp for the server-side implementation. Websocketpp has an intuitive object-oriented interface that will allow you to handle every event when data has been received,and can handle a huge number of concurrent clients. It is written to allow for multi-threading as well. In my particular case, I wrote a real-time, multi-threaded video game server on top of Websocketpp, so I'm sure that it works. Websocketpp is built on top of the Boost library, and the reason why it shines, in my opinion, is because the API is well-written and easy to use. The library comes with excellent sample code and the developer actively maintains his project. By using a mature websockets implementation, you won't be doing any polling that burns CPU. You'll be able to handle stuff asynchronously both on the client side and the server side. Websockets is also natively available using Javascript with most web browsers, but if you aren't using a web browser or webview, you can find freely available Websocket clients for different languages.
To use the Websocketpp server, you register some callback handlers for common events.
- on_open() gets called whenever a new client makes its first connection to the server.
- on_close() gets called when a client terminates its connection.
- on_message() gets called whenever a connected client sends data to the server.
Because it is easy to register handlers for these functions, you really don't have to worry much about the protocol and you can just concentrate on your application-specific logic.
To answer your updated question, HTTP is not well-suited to streaming, but has been used quite extensively because it used to be the case that there was no good alternative. If you research AJAX stuff, you'll find that HTTP was used with a "long polling" technique. Perhaps you'll find this post quite useful: In what situations would AJAX long/short polling be preferred over HTML5 WebSockets?
I believe the accepted answer is so good that you should just refer to that one so that I don't have to repeat the merits of why I think you should choose Websockets.