Push mechanism for efficiently sending aggregated data items to client
First Claim
1. A computer-implemented method comprising:
- transmitting, by a client to a server, a single request for notifications based on a request/response protocol, wherein the server is configured to receive different types of notifications for the client from multiple data sources;
connecting to the server via a communications pipe opened by the server in response to the single request for notifications;
receiving aggregated notifications pushed by the server via the communications pipe as chunks of a holding thread, wherein the holding thread obtains exclusive use of the communications pipe for pushing the chunks of the holding thread to the client, locks out acquiring threads seeking use of the communications pipe to transmit notifications for the client included in the acquiring threads, and drains the notifications for the client from the acquiring threads through the communications pipe as chunks of the holding thread;
interpreting, by the client, the chunks of the holding thread as multiple responses to the single request for notifications; and
distributing the aggregated notifications to a user interface.
1 Assignment
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.
19 Citations
20 Claims
-
1. A computer-implemented method comprising:
-
transmitting, by a client to a server, a single request for notifications based on a request/response protocol, wherein the server is configured to receive different types of notifications for the client from multiple data sources; connecting to the server via a communications pipe opened by the server in response to the single request for notifications; receiving aggregated notifications pushed by the server via the communications pipe as chunks of a holding thread, wherein the holding thread obtains exclusive use of the communications pipe for pushing the chunks of the holding thread to the client, locks out acquiring threads seeking use of the communications pipe to transmit notifications for the client included in the acquiring threads, and drains the notifications for the client from the acquiring threads through the communications pipe as chunks of the holding thread; interpreting, by the client, the chunks of the holding thread as multiple responses to the single request for notifications; and distributing the aggregated notifications to a user interface. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A computing device comprising:
-
a processor configured to execute computer-executable instructions; and memory storing computer-executable instructions for; transmitting, by a client to a server, a single request for notifications based on a request/response protocol, wherein the server is configured to receive different types of notifications for the client from multiple data sources; connecting to the server via a communications pipe opened by the server in response to the single request for notifications; receiving aggregated notifications pushed by the server via the communications pipe as chunks of a holding thread, wherein the holding thread obtains exclusive use of the communications pipe for pushing the chunks of the holding thread to the client, locks out acquiring threads seeking use of the communications pipe to transmit notifications for the client included in the acquiring threads, and drains the notifications for the client from the acquiring threads through the communications pipe as chunks of the holding thread; interpreting, by the client, the chunks of the holding thread as multiple responses to the single request for notifications; and distributing the aggregated notifications to a user interface. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. 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 computing device to perform steps comprising:
-
transmitting, by a client to a server, a single request for notifications based on a request/response protocol, wherein the server is configured to receive different types of notifications for the client from multiple data sources; connecting to the server via a communications pipe opened by the server in response to the single request for notifications; receiving aggregated notifications pushed by the server via the communications pipe as chunks of a holding thread, wherein the holding thread obtains exclusive use of the communications pipe for pushing the chunks of the holding thread to the client, locks out acquiring threads seeking use of the communications pipe to transmit notifications for the client included in the acquiring threads, and drains the notifications for the client from the acquiring threads through the communications pipe as chunks of the holding thread; interpreting, by the client, the chunks of the holding thread as multiple responses to the single request for notifications; and distributing the aggregated notifications to a user interface. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification