IP Library Granted Patent US 10,498,777
Granted Patent B2
US 10,498,777 · App. 14/644,892 · Granted Dec 3, 2019

Real-time push notifications for cloud-based applications

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,498,777
App. No.
14/644,892
Granted
Dec 3, 2019
Kind
B2
Abstract

An improved technique pushes change notifications to application instances running on frontend clients. In accordance with the improved technique, a backend system sends compact change notifications merely to inform the application instances that contents of the data storage container have changed. The application instances may then respond by requesting the changed content of the data storage container. In response to the request, the backend system provides the requested contents.

Claims (59)

1. A method of providing push notifications in a backend system that provides services for supporting cloud-based software applications, the method comprising:

in response to a change in contents of a data storage container, sending, from the backend system over a network, a change notification to a set of application instances of a cloud-based software application, the change notification including a message that indicates that the contents of the data storage container have changed;

receiving a request from each of the set of application instances to obtain changed contents of the data storage container; and

in response to receiving each such request, supplying the changed contents of the data storage container to each of the set of application instances,

wherein the method further comprises, prior to sending the change notification, creating the data storage container by data storage services operating on the backend system, the data storage container (i) providing a logical container for storing data and (ii) having no assignment by the data storage services to any end user of the cloud-based application, the data storage container being one of a set of multiple data storage containers storing data of the cloud-based software application on a same server in the backend system,

wherein the method further comprises establishing a persistent connection between each of the set of data storage containers and each of the set of application instances, each persistent connection being dedicated to one and only one of the data storage containers such that no two data storage containers share the same persistent connection,

wherein sending the change notification indicating that the contents of the data storage container have changed includes transmitting the change notification to each of the set of application instances over the network via the respective, persistent connection, and

wherein receiving the request from each of the set of application instances to obtain the changed contents of the data storage container includes receiving each such request over a communication channel distinct from the respective, persistent connection.

2. A method as in claim 1 , wherein sending the change notification to the set of application instances includes:

sending the change notification to each of the set of application instances over the respective, persistent connection as a respective server-sent event, each server-sent event being a real-time event raised by the backend system, transmitted to the respective application instance over HTTP (Hypertext Transfer Protocol), and realized as a standardized feature conforming to HTML5 (Hypertext Markup Language, Version 5) or a later version, in which a server fires an error event and automatically attempts a reconnect in response to a dropped connection.

3. A method as in claim 1 , wherein sending the change notification to the set of application instances includes:

first, attempting to send the change notification as a respective server-sent event to each of the set of application instances;

second, when the first attempting fails, attempting to send the change notification to each of the set of application instances using web socket technology; and

third, when the first and second attempting fails, attempting to send the change notification to each of the set of application instances using long polling over HTTP.

4. A method as in claim 1 , further comprising:

in response to the change in an element of the contents of the data storage container, generating a timestamp indicating a time at which the element was changed.

5. A method as in claim 4 , wherein the element of the contents of the data storage container is a file;

wherein the method further comprises:

configuring the data storage container to store a set of files, each of the set of files represented as an entry in a metadata database, the entry having a timestamp indicating a time at which that file was most recently changed.

6. A method as in claim 5 , wherein supplying the changed contents of the data storage container to each of the set of application instances includes:

for each of the set of application instances, (i) identifying files stored in the data storage container that have changed since a request was last received from the respective application instance, and (ii) sending data of the identified files to the respective application instance.

7. A method as in claim 1 , wherein sending the change notification includes:

providing the change notification to the set of application instances via a logical channel dedicated to the data storage container; and

resolving the change notification at the logical channel into the respective persistent, one-way connection to each of the set of application instances.

8. A method as in claim 7 , wherein the message consists of a set of characters having between zero and 16 characters to describe the fact that the contents of the data storage container have changed; and

wherein resolving the change notification at the logical channel into the respective persistent, one-way connection to each of the set of application instances includes:

sending the set of characters to each of the set of application instances.

9. A method as in claim 1 , further comprising:

in response to a change in contents of another data storage container, sending another change notification to another set of application instances of the cloud-based software application, the other set of application instances being subscribed to change notifications for the other data storage container, the other change notification being distinct from the change notification and including a message indicating that the contents of the other data storage container have changed;

receiving requests from each of the other set of application instances to obtain changed contents of the other data storage container; and

in response to receiving the requests, supplying the changed contents of the other data storage container to each of the other set of application instances.

10. A method as in claim 1 ,

wherein the data storage container is shared between a first user and a second user of the cloud-based software application, and

wherein supplying the changed contents to each of the set of application instances includes supplying the changed contents to a first set of application instances used by the first user and a second set of application instances used by the second user.

11. An electronic apparatus constructed and arranged to provide push notifications in a backend system that provides services for supporting cloud-based software applications, the electronic apparatus comprising:

a network interface; and

a controller including memory and control circuitry coupled to the memory, the controller constructed and arranged to:

in response to a change in contents of a data storage container, send, from the backend system over a network, a change notification to a set of application instances of a cloud-based software application, the change notification including a message that indicates that the contents of the data storage container have changed;

receive a request from each of the set of application instances to obtain changed contents of the data storage container; and

in response to receiving each such request, supply the changed contents of the data storage container to each of the set of application instances, the data storage container being one of a set of multiple data storage containers storing data of the cloud-based software application on a same server in the backend system, each of the set of data storage containers having a dedicated, persistent connection with each of the set of application instances, each dedicated, persistent connection being dedicated to one and only one of the data storage containers such that no two data storage containers share the same dedicated, persistent connection,

wherein the controller, constructed and arranged to send the change notification, is further constructed and arranged to:

send the change notification indicating that the contents of the data storage container have changed over the network via the dedicated, persistent connection between the backend system and each of the set of application instances, and

wherein, when constructed and arranged to receive the request from each of the set of application instances to obtain the changed contents of the data storage container, the controller is further constructed and arranged to receive each such request over a communication channel distinct from the dedicated, persistent connection.

12. An apparatus as in claim 11 , wherein the controller is further constructed and arranged to:

prior to sending the change notification and in response to receiving a request from the cloud-based application, direct a data storage service in the backend system to create the data storage container in a set of storage devices, the data storage container (i) providing a logical container for storing data and (ii) having no assignment by the data storage services to any end user of the cloud-based application.

13. An apparatus as in claim 11 , wherein, when constructed and arranged to transmit the change notification, the controller is further constructed and arranged to:

send the change notification to each of the set of application instances over the respective, persistent connection as a respective server-sent event, each server-sent event being a real-time event raised by the backend system, transmitted to the respective application instance over HTTP (Hypertext Transfer Protocol), and realized as a standardized feature conforming to HTML5 (Hypertext Markup Language, Version 5) or a later version.

14. A non-transitory, computer-readable storage medium including instructions which, when executed by control circuitry, cause the control circuitry to perform a method of providing push notifications in a backend system that provides services for supporting cloud-based software applications, the method comprising:

in response to a change in contents of a data storage container, sending, from the backend system over a network, a change notification to a set of application instances of a cloud-based software application, the change notification including a message that indicates that the contents of the data storage container have changed;

receiving a request from each of the set of application instances to obtain changed contents of the data storage container; and

in response to receiving each such request, supplying the changed contents of the data storage container to each of the set of application instances, the data storage container being one of a set of multiple data storage containers storing data of the cloud-based software application on a same server in the backend system,

wherein the method further comprises establishing a persistent connection between each of the set of data storage containers and each of the set of application instances, each persistent connection being dedicated to one and only one of the data storage containers such that no two data storage containers share the same persistent connection,

wherein sending the change notification indicating that the contents of the data storage container have changed includes transmitting the change notification to each of the set of application instances over the network via the respective, persistent connection, and

wherein receiving the request from each of the set of application instances to obtain the changed contents of the data storage container includes receiving each such request over a communication channel distinct from the respective, persistent connection.

15. The method of claim 1 , further comprising, in response to a deletion of contents of a second data storage container, sending a second change notification to the set of application instances, the second change notification including a message that indicates that the contents of the second data storage container have been deleted, the second change notification directing the set of application instances to delete the contents of the second data storage container without requesting further information about changed contents of the second data storage container.

16. The method of claim 1 , wherein the set of application instances are subscribed to change notifications for the data storage container, and wherein the backend system subscribes at least one of the set of application instances to the data storage container automatically in response to the application instance accessing the data storage container for a first time.

17. The method of claim 16 , further comprising:

storing a set of files in the data storage container, each of the set of files represented by a respective entry in a metadata database stored in the backend system, each entry having a respective timestamp indicating a time at which the file represented by the respectively entry was most recently changed,

wherein supplying the changed contents of the data storage container to each of the set of application instances includes, for each of the set of application instances, (i) identifying files stored in the data storage container that have changed since a request was last received from the respective application instance for an update of the data storage container, and (ii) sending data of the identified files to the respective application instance.

Assignments (6)
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →