Methods, systems, and computer program products for synchronizing data stored
at one or more message clients with data stored at a message server where the message
clients may receive update notifications and may represent the data using different
data structures than the message server uses to represent the same data. A token
is associated with each data change that occurs at the message server. The message
server sends each change and associated token to the message clients. When the
message clients request a synchronization, the tokens they received are returned
to the message server for comparison with the tokens the message server sent to
the message clients. If the message clients do not return a particular token, the
message server determines that the clients did not receive the corresponding change
and resends the change to the message clients. Tokens may also be used to divide
a change into one or more portions, with only one portion being provided initially.
Then, in response to receiving the token associated with the portion, the message
server may provide the remaining portion of the message to the message clients.