Direct Push Activity
The following illustration shows the simplest form of direct push communication between the client and the Exchange Server.
The “T” in this illustration indicates the progression of time.
The following steps describe the communication; the numbers correspond to the numbers in the illustration:
- The client wakes up and issues an HTTP request over the Internet to the Exchange Server, and then goes to sleep.
To keep the session active, the request states the heartbeat interval, which is the amount of time that the server should wait for PIM or new mail to arrive before sending OK to the client. In this illustration, the heartbeat interval is 15 minutes.
The heartbeat interval is dynamically determined; the client programmatically determines it based on network conditions and how long an idle HTTP connection can be maintained on the operator network. This process is further described in Heartbeat Interval Adjustment.
- Because no PIM or mail arrived during the heartbeat interval, the server returns an HTTP 200 OK.
- The server response wakes up the client. Because the connection did not time out during the interval, the client determines that the network can support idle connections for at least this length of time. The client can therefore increase the interval to a longer time.
The device waits for successive round trips before attempting to adjust the heartbeat interval. A tuning component in the algorithm can change the increments to an amount different than what is specified as the HeartbeatIncrement.
- The client reissues the request, possibly with a longer interval length, thus restarting the process.
- During the heartbeat interval, the server receives a PIM change (such as a new Calendar item) and immediately notifies the client. In this illustration, this occurred 23 minutes after the first interval was started.
- The server response wakes up the client. The client then synchronizes the appropriate folder.
When the synchronization is complete, the client re-issues the HTTP request and goes back to sleep.