System and method for facilitating real-time collaborating by collapsing a queue for a slow client
First Claim
1. An apparatus for facilitating real-time collaboration, comprising:
- a web server configured to receive connections from clients of collaboration attendees;
one or more communication modules configured to disseminate collaboration data to the clients;
an organizer configured to manage the collaboration, the organizer comprising;
a communication layer configured to communicate with the clients through the communication modules;
a roster configured to identify permissions assigned to the clients;
for each mode of the collaboration, each control unit configured to manage the each mode, wherein the each control unit includes a queue, wherein the each control unit is capable of collapsing the queue for a slow client, and wherein collapsing the queue involves;
creating a virtual screen that includes data from the queue which the slow client has not received,sending the virtual screen to the slow client instead of trying to send the slow client every separate set of data in the queue, anddiscarding data that is no longer needed by the clients; and
a filter configured to direct collaboration data received from the clients to an appropriate control unit,wherein the slow client is a client that accepts or requests collaboration data at a notably slower rate than other clients in the same mode, and collapsing the queue prevents the slow client from affecting the rate at which other clients receive data.
1 Assignment
0 Petitions
Accused Products
Abstract
A system and method for facilitating real-time collaboration. A real-time collaboration server comprises a number of communication modules for handling communications with individual clients. An organizer manages the collaboration and includes a control unit for each mode (e.g., desktop sharing, whiteboard, chat). Incoming communications are routed to the appropriate control unit by a filter. The control unit queues sets of collaboration data for distribution to clients through separate communication modules. When a client acknowledges one set of data sent to it, the next set can be sent. A roster control unit maintains a roster of clients, including their permissions and properties. A client'"'"'s permissions may be verified when a communication is received from or is to be sent to the client.
133 Citations
25 Claims
-
1. An apparatus for facilitating real-time collaboration, comprising:
-
a web server configured to receive connections from clients of collaboration attendees; one or more communication modules configured to disseminate collaboration data to the clients; an organizer configured to manage the collaboration, the organizer comprising; a communication layer configured to communicate with the clients through the communication modules; a roster configured to identify permissions assigned to the clients; for each mode of the collaboration, each control unit configured to manage the each mode, wherein the each control unit includes a queue, wherein the each control unit is capable of collapsing the queue for a slow client, and wherein collapsing the queue involves; creating a virtual screen that includes data from the queue which the slow client has not received, sending the virtual screen to the slow client instead of trying to send the slow client every separate set of data in the queue, and discarding data that is no longer needed by the clients; and a filter configured to direct collaboration data received from the clients to an appropriate control unit, wherein the slow client is a client that accepts or requests collaboration data at a notably slower rate than other clients in the same mode, and collapsing the queue prevents the slow client from affecting the rate at which other clients receive data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A system for managing a real-time collaboration, comprising:
-
for each mode of the collaboration, a control unit configured to manage the dissemination of collaboration mode data to clients, wherein each said control unit comprises; a queue configured to store the collaboration data, wherein the queue can be collapsed for a slow client by the control unit, and wherein collapsing the queue involves; creating a virtual screen that includes data from the queue which the slow client has not received, sending the virtual screen to the slow client instead of trying to send the slow client every separate set of data in the queue, and discarding data that is no longer needed by the clients; and for each of the clients, a pointer configured to facilitate identification of queued data to send to the client; one or more communication modules configured to transmit the collaboration data to the clients; a communication layer configured to facilitate communication of the collaboration data to the clients via said one or more communication modules, wherein the communication layer comprises one or more virtual channels to each of the clients; and for each of the clients, a client object configured to exchange collaboration data between the client and a first control unit through the communication layer, wherein said client object comprises one or more of; a data consumer configured to receive data from the first control unit for the client; and a data provider configured to provide data from the client to the first control unit, wherein the slow client is a client that accepts or requests collaboration data at a notably slower rate than other clients in the same mode, and collapsing the queue prevents the slow client from affecting the rate at which other clients receive data. - View Dependent Claims (16, 17, 18, 19)
-
-
20. A method of facilitating real-time collaboration, comprising:
-
establishing virtual channels between a collaboration organizer and a set of clients participating in the collaboration, wherein one or more communication modules couple the clients to the organizer; operating a first control unit to manage a first mode of the collaboration, wherein the control unit includes a queue, wherein the control unit is capable of collapsing the queue for a slow client, and wherein collapsing the queue involves; creating a virtual screen that includes data from the queue which the slow client has not received, sending the virtual screen to the slow client instead of trying to send the slow client every separate set of data in the queue, and discarding data that is no longer needed by the clients; operating a roster control unit to manage a roster of the set of clients, wherein said roster is configured to identify the clients and permissions of the clients; receiving a first collaboration update, from a first client, for the first mode; verifying a permission of the first client to submit the first collaboration update; processing the first collaboration update at the first control unit; dispatching the first collaboration update from the first control unit; verifying permissions of the clients to receive the first collaboration update; and disseminating the first collaboration update to the set of clients, wherein the slow client is a client that accepts or requests collaboration data at a notably slower rate than other clients in the same mode, and collapsing the queue prevents the slow client from affecting the rate at which other clients receive data. - View Dependent Claims (21, 22, 23, 24)
-
-
25. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of facilitating real-time collaboration, the method comprising:
-
establishing virtual channels between a collaboration organizer and a set of clients participating in the collaboration, wherein one or more communication modules couple the clients to the organizer; operating a first control unit to manage a first mode of the collaboration, wherein the control unit includes a queue, wherein the control unit is capable of collapsing the queue for a slow client, and wherein collapsing the queue involves; creating a virtual screen that includes data from the queue which the slow client has not received, sending the virtual screen to the slow client instead of trying to send the slow client every separate set of data in the queue, and discarding data that is no longer needed by the clients; operating a roster control unit to manage a roster of the set of clients, wherein said roster is configured to identify the clients and permissions of the clients; receiving a first collaboration update, from a first client, for the first mode; verifying a permission of the first client to submit the first collaboration update; processing the first collaboration update at the first control unit; dispatching the first collaboration update from the first control unit; verifying permissions of the clients to receive the first collaboration update; and disseminating the first collaboration update to the set of clients, wherein the slow client is a client that accepts or requests collaboration data at a notably slower rate than other clients in the same mode, and collapsing the queue prevents the slow client from affecting the rate at which other clients receive data.
-
Specification