The client has to have a public internet port available for XML-RPC or an HTTP post. The central cloud server sends pings to all of the subscribers.
It's a bad idea.
If you're going to do this, just use XMPP. Otherwise, use HTTP the way it was intended and just have the client poll the server. Why does everyone think this is such a bad idea? Polling works. It scales. It's simple.