1. Technical Field
The present invention relates to a system and method for batching individual content requests that are received from clients at a forward proxy, and sending a batch content request from the forward proxy to a collaboration server.
2. Description of the Related Art
In today's distributed online meeting sessions, a speaker (publishing participant) typically controls a set of slides, which are managed at a collaboration server, while other participants view the slides from various access points. Participants from a corporation are usually located in “clusters” at a regional facility, such as in Raleigh, N.C. and Austin, Tex. Since each participant individually requests content updates from the collaboration server, a large degree of bandwidth is required between each of the participant's computers and the collaboration server. It would be desirable to have a mechanism to decrease bandwidth and processing requirements between participant access points and the collaboration server for these regional areas during online meeting sessions.
It has been discovered that the aforementioned challenges are resolved using a system and method for batching individual content requests received from clients at a forward proxy, and sending a batch content request from the forward proxy to a collaboration server. A forward proxy receives a first content request from a first client. In response to receiving the first content request, the forward proxy identifies a first set of personal attributes that correspond to the first client. Next, the forward proxy receives a second content request from a second client. Again, in response to receiving the second content request, the forward proxy identifies a second set of personal attributes that correspond to the second client. In turn, the forward proxy inserts the first set of personal attributes and the second set of personal attributes in a batch content request. The forward proxy then sends the batch content request to a downstream server.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings.
The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention, which is defined in the claims following the description.
In order to authorize client A 110, client B 140, and client C 150 for an online meeting, forward proxy 100 sends authorization request 106, which includes client credentials for participating clients, to collaboration server 120. Collaboration server 120 communicates with directory services 130 to verify client authorization, and sends authorization response 108 to forward proxy 100. Authorization response 108 includes a personalized cookie for each authorized client, along with session information that identifies the particular online meeting session. In turn, forward proxy 100 sends the personalized cookies and session information to clients A 110, B 140, and C 150.
Once authorized, client A 110 sends publish content 115 to forward proxy 100. Publish content 115 is a request to publish or change particular content (e.g., slides) that clients use during an online meeting session. Forward proxy 100 receives publish content 115 and forwards it to collaboration server 120. Collaboration server 120 receives publish content 115, and stores the content for subsequent client distribution.
Forward proxy 100 receives content request 145 from client B 140, which is a request for new/updated content corresponding to the online meeting. Forward proxy 100 logs the content request and waits for similar requests from other clients for a particular amount of time based upon a batch timer. Before the batch timer expires, client C 150 sends content request 155 to forward proxy 100, which requests the same content as requested by client B 140. Since client B 140 and client C 150 are requesting the same content, forward proxy 100 includes their personalized attributes into batch content request 160, and sends batch content request 160 to collaboration server 120.
Collaboration server 120 parses batch content request 160 and verifies that each of the clients is authorized. Next, collaboration server 120 retrieves the requested content and sends batch content response 170 to forward proxy 100. Batch content response 170 includes the requested content, along with session information that informs forward proxy 100 as to which client to send the requested content. Forward proxy 100 parses batch content response 170, and individually sends content 175 and content 180 to client B 140 and client C 150, respectively.
At particular intervals, client B 140 sends new content request 220 to forward proxy 100. At independent intervals, client C 150 sends new content request 230 to forward proxy 100. Forward proxy 100 generates a batch content request, which includes client B 140's personalized attributes and client C 150's personalized attributes, into a batch content request and sends batch content request 240 to collaboration server 120. Collaboration server 120 composes a batch content response, which includes the requested content and session information, and sends batch content response 245 to forward proxy 100. Forward proxy parses the batch content response and sends new personalized content 250 to client C 150 and new personalized content 255 to client B 140. Client B 140 and client C 150 are the same as that shown in
At subsequent intervals, client B 140 and client C 150 send content request 260 and content request 265, respectively, to forward proxy 100. Forward proxy 100 batches the content requests together, and sends batch content request 270 to collaboration server 120. Collaboration server 120 determines that no new content is available for the corresponding online session, and sends no new batch content 275 to forward proxy 100. In turn, forward proxy 100 informs client C 150 and client B 140 that no new content is available via no new content messages 280 and 285, respectively.
Processing commences at 300, whereupon the forward proxy sends an authorization request to collaboration server 120 that includes client credentials. Collaboration server 120 determines whether to authorize each of the clients, and sends an authorization response, which the forward proxy receives at step 320 (see
A determination is made as to whether collaboration server 120 authorized the clients (decision 330). If collaboration server 120 did not authorize the clients, decision 330 branches to “No ” branch 332 whereupon processing informs an administrator at step 335, and processing ends at 340.
On the other hand, if collaboration server 120 authorized the clients, decision 330 branches to “Yes” branch 338 whereupon processing receives a personalized cookie for each of the clients from collaboration server 120 (step 350). The forward proxy then sends the personalized cookies to clients 365 at step 360, and processing ends at 370.
Processing commences at 400, whereupon processing sets a batch timer at step 402. The batch timer informs the forward proxy times at which to send a batch content request, such as every 10 seconds. At step 405, the forward proxy accepts a new content request from a client at step 405. A determination is made as to whether the requested content may be batched (decision 410). For example, hatchable content may be non-personalized content, such as a slide, a document for review, or weather for a specific city. Non-batchable content may be personalized information or an action performed, such as posting a new slide for review, document edits sent to a server, or stock portfolio quotes. If the requested content cannot be batched, decision 410 branches to “No” branch 412 whereupon the forward proxy sends the content request to collaboration server 120 at step 415.
On the other hand, if the requested content can be batched, decision 410 branches to “Yes” branch 418 whereupon a determination is made as to whether the requesting client has a personalized cookie (decision 420). The forward proxy requires the client to have a registered personalized cookie in order for the forward proxy to be able to batch the content request with other client requests. If the client does not have a registered personalized cookie, decision 420 branches to “No” branch 422 whereupon the forward proxy sends a content request to collaboration server 120 at step 415.
On the other hand, if the client has a personalized cookie, decision 420 branches to “Yes” branch 428 whereupon a determination is made as to whether the content request is the first request for the particular content. For example, the forward proxy may have recently received a content request from another client that is requesting the same content. If the content request is a duplication of a recent content request, decision 430 branches to “Duplicate” branch 432 whereupon processing adds the requesting client's personalized attributes to the batch content request at step 435. The personalized attributes include the client's personalized cookie and other personalized request parameters such as a user ID, an IP Address, and may also include actions such as raising your hand in an online meeting or marking a user's status to “do not disturb” in the meeting.
On the other hand, of the content request is a new request, decision 430 branches to “New” branch 438 whereupon the forward proxy starts the batch timer and creates a new batch request, which includes a content request and the client's personalized attributes.
A determination is made as to whether the batch timer has expired (decision 450). If the batch timer has not expired, decision 450 branches to “No” branch 452, which loops back to process more client requests. This looping continues until the batch timer has expired, at which point decision 450 branches to “Yes” branch 458 whereupon the forward proxy sends a batch content request to collaboration server 120, which includes personalized attributes of each client requesting the particular content (step 460).
Collaboration server 120 receives and processes the patch content request (see
The forward proxy parses the batch content response in order to extract the session information and individually sends the content to each of the clients corresponding to the session information (step 480). A determination is made as to whether to continue processing (decision 490). If processing should continue, decision 490 branches to “Yes” branch 492, which loops back to process more client requests. This looping continues until processing should terminate, at which point decision 490 branches to “No” branch 498 whereupon processing ends at 499.
Collaboration server processing commences at 520, whereupon the collaboration server receives the batch content request at step 525. At step 530, the collaboration server parses the personal attributes included in the batch content request in order to identify the meeting participants. In one embodiment, the collaboration server verifies that the participants are authorized to participate in the online meeting.
Processing generates a content response, which may include slide updates for the online meeting, along with personalized responses (step 535). Personalized responses may be in the form of setting the proper cookie for the user or encoding the content in a way that the user's browser can interpret, such as using compression or a lower resolution. The collaboration server then batches the personalized responses together with the content response (step 540), and sends a batch content response to the proxy server at step 545. Collaboration server processing ends at 550.
The forward proxy receives the batch content response at step 560, and parses the batch content response in order to identify client recipients (step 565). Once identified, the forward proxy server sends the content response to each of clients 580 at step 570, and processing ends at 590.
PCI bus 614 provides an interface for a variety of devices that are shared by host processor(s) 600 and Service Processor 616 including, for example, flash memory 618. PCI-to-ISA bridge 635 provides bus control to handle transfers between PCI bus 614 and ISA bus 640, universal serial bus (USB) functionality 645, power management functionality 655, and can include other functional elements not shown, such as a real-time clock (RTC), DMA control, interrupt support, and system management bus support. Nonvolatile RAM 620 is attached to ISA Bus 640. Service Processor 616 includes JTAG and I2C busses 622 for communication with processor(s) 600 during initialization steps. JTAG/I2C busses 622 are also coupled to L2 cache 604, Host-to-PCI bridge 606, and main memory 608 providing a communications path between the processor, the Service Processor, the L2 cache, the Host-to-PCI bridge, and the main memory. Service Processor 616 also has access to system power resources for powering down information handling device 601.
Peripheral devices and input/output (I/O) devices can be attached to various interfaces (e.g., parallel interface 662, serial interface 664, keyboard interface 668, and mouse interface 670 coupled to ISA bus 640. Alternatively, many I/O devices can be accommodated by a super I/O controller (not shown) attached to ISA bus 640.
In order to attach computer system 601 to another computer system to copy files over a network, LAN card 630 is coupled to PCI bus 610. Similarly, to connect computer system 601 to an ISP to connect to the Internet using a telephone line connection, modem 665 is connected to serial port 664 and PCI-to-ISA Bridge 635.
While
One of the preferred implementations of the invention is a client application, namely, a set of instructions (program code) in a code module that may, for example, be resident in the random access memory of the computer. Until required by the computer, the set of instructions may be stored in another computer memory, for example, in a hard disk drive, or in a removable memory such as an optical disk (for eventual use in a CD ROM) or floppy disk (for eventual use in a floppy disk drive), or downloaded via the Internet or other computer network. Thus, the present invention may be implemented as a computer program product for use in a computer. In addition, although the various methods described are conveniently implemented in a general purpose computer selectively activated or reconfigured by software, one of ordinary skill in the art would also recognize that such methods may be carried out in hardware, in firmware, or in more specialized apparatus constructed to perform the required method steps.
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.