Push mechanism for efficiently sending aggregated data items to client
First Claim
1. A computer-implemented data communication system, comprising:
- a server having a processor for executing computer-executable components stored in memory including;
a data component for receiving and aggregating data items from multiple data sources for transmission to a client, the data items comprising different types of notifications for the client;
a push component for establishing a communications pipe based on a request/response protocol and pushing aggregated data items to the client via the communications pipe, wherein;
the communications pipe is established by receiving a single request for notifications from the client, opening the communications pipe in response to the single request, and keeping the single request open, andthe data items comprising the different types of notifications are pushed to the client via the communications pipe as chunks interpreted by the client as multiple responses to the single request; and
a locking component for managing incoming threads having data items for transmission to the client via a holding thread, wherein;
exclusive use of the communications pipe is obtained by the holding thread for pushing the chunks to the client,an incoming thread seeking use of the communications pipe for transmitting one or more additional data items to the client notifies the holding thread of the additional data items, andthe holding thread drains the additional data items from the incoming thread and includes the additional data items in the chunks to be pushed to the client via the communications pipe.
2 Assignments
0 Petitions
Accused Products
Abstract
A server push model for client/server communications. The push architecture operates on top of a non-push (e.g., request/response) protocol (e.g., HTTP) to combine notifications from multiple data sources (e.g., email, text messaging, etc.). The server can be a middle-tier server (or proxy) to which a single web client registers interest in one or more notification types from one or more data sources. The mid-tier server aggregates the notifications from the various data sources and delivers the notifications to the requesting client via a single “push” pipe. The web client then distributes each notification to the appropriate parts of the client user interface. A producer/consumer locking mechanism eliminates blocking threads waiting on a mutual exclusion lock. A notification throttling mechanism distinguishes different types of notifications in order to guarantee that the client is not overloaded with too much information.
-
Citations
20 Claims
-
1. A computer-implemented data communication system, comprising:
a server having a processor for executing computer-executable components stored in memory including; a data component for receiving and aggregating data items from multiple data sources for transmission to a client, the data items comprising different types of notifications for the client; a push component for establishing a communications pipe based on a request/response protocol and pushing aggregated data items to the client via the communications pipe, wherein; the communications pipe is established by receiving a single request for notifications from the client, opening the communications pipe in response to the single request, and keeping the single request open, and the data items comprising the different types of notifications are pushed to the client via the communications pipe as chunks interpreted by the client as multiple responses to the single request; and a locking component for managing incoming threads having data items for transmission to the client via a holding thread, wherein; exclusive use of the communications pipe is obtained by the holding thread for pushing the chunks to the client, an incoming thread seeking use of the communications pipe for transmitting one or more additional data items to the client notifies the holding thread of the additional data items, and the holding thread drains the additional data items from the incoming thread and includes the additional data items in the chunks to be pushed to the client via the communications pipe. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
10. A computer-implemented method of communicating data to a client, comprising:
-
receiving and aggregating data items from multiple data sources for transmission to a client, the data items comprising different types of notifications for the client; establishing a communications pipe based on a request/response protocol by receiving a single request for notifications from the client, opening the communications pipe in response to the single request, and keeping the single request open; pushing aggregated data items to the client via the communications pipe, wherein the data items comprising the different types of notifications are pushed to the client via the communications pipe as chunks interpreted by the client as multiple responses to the single request; and managing incoming threads having data items for transmission to the client via a holding thread, wherein exclusive use of the communications pipe is obtained by the holding thread for pushing the chunks to the client, an incoming thread seeking use of the communications pipe for transmitting one or more additional data items to the client notifies the holding thread of the additional data items, and the holding thread drains the additional data items from the incoming thread and includes the additional data items in the chunks to be pushed to the client via the communications pipe. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A computer-readable storage medium not consisting of a signal, the computer-readable storage medium storing computer-executable instructions, the computer-executable instructions, when executed, causing a server to perform steps comprising:
-
receiving and aggregating data items from multiple data sources for transmission to a client, the data items comprising different types of notifications for the client; establishing a communications pipe based on a request/response protocol by receiving a single request for notifications from the client, opening the communications pipe in response to the single request, and keeping the single request open; pushing aggregated data items to the client via the communications pipe, wherein the data items comprising the different types of notifications are pushed to the client via the communications pipe as chunks interpreted by the client as multiple responses to the single request; and managing incoming threads having data items for transmission to the client via a holding thread, wherein exclusive use of the communications pipe is obtained by the holding thread for pushing the chunks to the client, an incoming thread seeking use of the communications pipe for transmitting one or more additional data items to the client notifies the holding thread of the additional data items, and the holding thread drains the additional data items from the incoming thread and includes the additional data items in the chunks to be pushed to the client via the communications pipe. - View Dependent Claims (19, 20)
-
Specification