Comet is the umbrella term for different HTTP push methods. Basically, Exchange uses Long Polling which is a way of maintaining a long lived HTTP connection so that the server can send data as it's received instead of queuing for the next poll.
When the connection times out or is closed, the client immediately reconnects. So, the overall flow looks something like:
- Client connects
- Client asks for notifications for the next 10 mins
- If no notification in 10 mins, server sends HTTP 200 OK and closes the connection
- Back to 1
Exchange, of course, is a little bit smarter in that it tries to dynamically adjust the timeout values to compensate for different network conditions that may reset the connection sooner. If the client wakes up after 10 mins and sees that the server never responded or the connection is broken, it'll use a smaller timeout the next time.