Patent ID: 7885925
Filing Date: 2011-02-08
Classification: G06F,H04L

Abstract:
1. A method for sharing and synchronizing data across a plurality of client devices, the method comprising: providing a client application on each of the client devices; and providing a server application on a server; wherein each client application on a client device monitors a datastore on the client device for any changes, and, in response to a change in the datastore on the client device, the client application automatically notifies the server application of the change; wherein each client application, when running on a client device that is online and connected via a network with the server, opens a connection with the server application and registers for notices of changes to data in which the client application is interested; wherein the server application maintains a copy of each client devices' datastore on the server and receives notifications from client applications of changes to datastores on client devices; wherein, in response to receiving a notification from a client application of a change to a datastore on a client device, the server application updates the server's copy of the datastore with the change, identifies any other client applications with open connections to the server that have registered for notices related to the data that was changed in the data store, and, in response to identifying one or more other client applications that have registered for notices related to the data that was changed in the datastore, immediately pushes notice of the change to the identified other client application(s); wherein, in response to a client application opening a connection with the server and registering for notices of changes to data in which the client application is interested, the server immediately sends the client application notices related to any changes to the data of interest that occurred while the client application was offline; and wherein the client application enables a user to share data objects with other users and includes a contact list for selecting other users with whom to share a data object and data object group management for managing shared data objects.