Cloud to on premise connection

For an application hosted in the cloud, how to push requests to clients in customer lab/on-premise in real-time?

Main concerns are:

  1. clients may not allow in-coming connections
  2. clients behind firewall
  3. want the requests to be received in real time, hence push is preferred over pull

How to go about building such system? Any open source componets can do this?