You have to change your architecture when moving to the cloud. In the cloud, at least the most commonly used cloud there is no such thing as 100% availability at first place. So no "always opened".
Next, there are quite a lot of factors that could close your connection. Over some you have control, over others you don't. Here is some non-conclusive list:
- Role recycling due to hardware failure (you have no control)
- Role recycling due to OS update (you have control - set specific OS version, but not recommended)
- Idle connection timeout (you have control - keep connection alive by sending packets at regular or irregular intervals, but do not keep connection idle more than 60 seconds)
- something else
In order to provide all users equal opportunity to use cloud resources, every cloud provider will try to manage these resources at best possible way. One such resource is TCP Sockets.
With Azure if a connection (any connection) is idle more than XXX seconds (this number has changed over time, so I don't want to quote any specific number, just assume it is 1 minute) it is being terminated.
At the end - there are too many factors in the cloud that would close your connection, so begin thinking the cloud way - implement retry logic in your protocols, and implement healing logic in your service. Last but not least - never use a single instance role if you seek high availability.
One interesting reading on connection timeouts can be found here. Although it only refers to connection within same datacentre (within roles and VMs) it is still worth reading.
And interesting update you have added - "I am connected to financial markets". Even so, you have to question 100% uptime vs. 99.95% uptime, which is the standard SLA for WebRoles with 2 instances. Never said it is easy, but you could achieve 99.95% availability with a minimum of 2 instance of a webrole (or worker role) and some kind of a watchdog that monitors for the connection. Always keep only one connection, if that goes down - immediately (when detected) open another connection. Keep required data in a redis cache for instance, or Azure Cache, or In-role Cache configured for high-availability.
There are solutions for high availability in the cloud. But if you look for 100%, this is not your place. There is no 100% SLA in the cloud.