Persistent collaborative framework for interactive web applications
First Claim
1. A computer-implemented process for providing an application-independent framework for facilitating persistent, collaborative interaction between users of a web application respectively running on a client associated with each user, wherein each client comprises a client-side library which interfaces with the web application running on the client and communicates with a server, the process comprising using each client to perform the following process actions:
- the client application invoking the client-side library to send a request to the server to log into a session of the web application;
the client application receiving in response to the request an indication of a successful login;
the client-side library sending an initial update poll to the server requesting an update to place the application running on the client in a current state;
the client-side library receiving, in response to the initial update poll, a current state of the application from the server as defined by a group of objects with each object comprising a set of property values, and a timestamp representing when the group of objects was sent;
the client-side library providing the group of objects defining the current state of the application to the application running on the client for implementation;
the client-side library caching the timestamp;
the client application generating and the client-side library sending a tuple describing a change to a property of an object to the server each time such a change is made, whereby said change is implemented locally by the client application;
the client-side library periodically sending an update poll to the server asking for an update to the state of the application, said update poll comprising the last cached timestamp;
the client-side library receiving from the server, tuples and an updated timestamp in response to each update poll, wherein each tuple describes a change to a property of an object;
the client-side library providing each tuple received to the application for possible implementation; and
the client-side library caching the updated timestamp in lieu of the last previously cached timestamp.
2 Assignments
0 Petitions
Accused Products
Abstract
A framework for facilitating collaborative interaction between users of a web application is presented. The framework provides persistence and sharing mechanisms for arbitrary application-defined objects. The sharing mechanism is coupled with a consistency mechanism that keeps client states consistent even when users perform conflicting operations. This framework is application-independent in that the persistence, sharing between clients and maintaining a consistent state among the clients is accomplished without the need for specific knowledge of the design of the web application. Thus, web developers can focus on the logic of the application and the UI, instead of spending time designing and implementing collaborative capabilities.
-
Citations
18 Claims
-
1. A computer-implemented process for providing an application-independent framework for facilitating persistent, collaborative interaction between users of a web application respectively running on a client associated with each user, wherein each client comprises a client-side library which interfaces with the web application running on the client and communicates with a server, the process comprising using each client to perform the following process actions:
-
the client application invoking the client-side library to send a request to the server to log into a session of the web application; the client application receiving in response to the request an indication of a successful login; the client-side library sending an initial update poll to the server requesting an update to place the application running on the client in a current state; the client-side library receiving, in response to the initial update poll, a current state of the application from the server as defined by a group of objects with each object comprising a set of property values, and a timestamp representing when the group of objects was sent; the client-side library providing the group of objects defining the current state of the application to the application running on the client for implementation; the client-side library caching the timestamp; the client application generating and the client-side library sending a tuple describing a change to a property of an object to the server each time such a change is made, whereby said change is implemented locally by the client application; the client-side library periodically sending an update poll to the server asking for an update to the state of the application, said update poll comprising the last cached timestamp; the client-side library receiving from the server, tuples and an updated timestamp in response to each update poll, wherein each tuple describes a change to a property of an object; the client-side library providing each tuple received to the application for possible implementation; and the client-side library caching the updated timestamp in lieu of the last previously cached timestamp. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 16, 17, 18)
-
-
10. A computer-implemented process for providing an application-independent framework for facilitating persistent, collaborative interaction between users of a web application respectively running on a client computer associated with each user, the process comprising using a server to perform the following process actions:
-
receiving a request from each client to log into a session of the web application, said request comprising a name identifying the session the client is requesting to join; determining if the request is valid and from an authorized client; upon the determining that the request is valid and from an authorized client, determining if the session in the request is new, upon the determining that the session is new, creating a session, sending a client identification token and session token to each client requesting to log into the session, wherein the client identification token uniquely identifies the client and the session token identifies the session, and wherein both tokens are to be included in all communications from the clients to the server; receiving an initial update poll from each client logged into the session requesting update information to place the application running on the client in a current state; sending in response to each initial update poll, tuples defining the current state of the application upon the determining that the session is not a newly created session, wherein the application is characterized as a group of objects with each object comprising a set of properties, and wherein each tuple defines a current value of a property of an object of the application, and a timestamp representing when the tuples defining the current state of the application were sent to the client; receiving tuples from at least one client, wherein each tuple defines a new value for a property of one of the objects; persisting each tuple received; receiving an update poll from at least one of the clients along with the last timestamp provided to that client, wherein the update poll requests updating tuples; and providing in response to each update poll, tuples persisted, after the time represented by the received timestamp, or which were not previously sent to the polling client but have become available for dissemination, and a timestamp representing when the tuples provided in response to an update poll were sent to the client.
-
-
11. A computer-implemented process for providing an application-independent framework for facilitating persistent, collaborative interaction between users of a web application respectively running on a client computer associated with each user, the process comprising using a server to perform the following process actions:
-
replicating a current state of the application on each client at the time the client joins a session of the application, wherein the current state of the application is defined by a group of objects with each object comprising a set of property values; persisting changes to the application states received from the individual clients, said persisting comprising, receiving a tuple from one of the clients describing a change made to a property of an object in said group of objects, wherein a tuple is received each time such a change is made, and persisting each tuple received; and maintaining the consistency of the state of the application across the clients, wherein each client comprises a client-side library which interfaces with the client application and communicates with a server, and wherein said maintaining comprises, receiving an update poll from the client-side library of a one of the clients requesting an update to the state of the application, and including a timestamp provided to the client-side library with the response to the last previous update poll, wherein the timestamp indicates when the response to the last previous update poll was sent to the client, and providing persisted tuples not provided to the polling client-side library the last previous time the polling client-side library was sent an update, as determined from the timestamp, to the polling client-side library along with an updated timestamp;
whereinsaid replicating, persisting and consistence maintenance are accomplished independent of the application. - View Dependent Claims (12)
-
Specification