The most important activity performed by the chat application is the distribution of chat room updates, including events such as Emma joined the room or Michael sent the message 'Hello!'.
To accommodate the varying capabilities of the client language mappings, our design supports two separate delivery models: push and pull. The push model delivers updates using callbacks, therefore a client using this model simply waits passively for the chat server to notify it about new events. In contrast, the pull model requires the client to actively poll periodically in order to receive new updates.