Claims
- 1. A method for facilitating communication between a plurality of clients on a network, comprising:
receiving a request with a dispatch server, the request being from a first one of the plurality of clients to join a first conference; and statelessly dispatching the first client to the first conference on a first one of a plurality of media servers associated with the dispatch server.
- 2. The method of claim 1 further comprising determining whether the first conference is currently being facilitated on any of the media servers.
- 3. The method of claim 2 wherein determining whether the first conference is currently being facilitated on any of the media servers comprises polling the media servers and receiving a response from the first media server.
- 4. The method of claim 2 further comprising triggering creation of the first conference on the first media server where the first conference is not currently being facilitated on any of the media servers.
- 5. The method of claim 4 further comprising determining which of the plurality of media servers has the most available capacity for creation of the first conference and receiving a response from the first media server.
- 6. The method of claim 5 wherein determining which of the plurality of media servers has the most available capacity is done with reference to a media type associated with the first conference.
- 7. The method of claim 5 wherein determining which of the plurality of media servers has the most available capacity is done with reference to a number of users associated with the first conference.
- 8. The method of claim 1 further comprising:
receiving an initial request with an authentication server, the initial request being from the first client to join the first conference; validating the initial request; and dispatching the first client to the dispatch server.
- 9. The method of claim 8 wherein validating the initial request comprises validating an authentication code associated with the initial request.
- 10. The method of claim 9 wherein the first client obtains the authentication code from a referring host.
- 11. The method of claim 8 wherein validating the initial request is done with reference to a communication from a referring host alerting the first media server that the first client will be transmitting a subsequent request to the first media server.
- 12. The method of claim 1 further comprising maintaining a list of the media servers in a memory associated with the dispatch server.
- 13. The method of claim 12 wherein maintaining the list comprises adding a particular media server to the list when the particular media server registers with the dispatch server.
- 14. The method of claim 1 further comprising alerting the first media server that the first client will be transmitting a subsequent request to the first media server.
- 15. The method of claim 14 wherein alerting the first media server comprises causing an entry corresponding to the first client to be entered in a will call list associated with the first media server.
- 16. The method of claim 1 further comprising monitoring a signal indicative of an operational status of the dispatch server.
- 17. The method of claim 16 wherein monitoring the signal comprises establishing direct communication between the dispatch and standby servers.
- 18. The method of claim 16 further comprising replacing the dispatch server with a standby server where the operational status of the dispatch server indicates a failure.
- 19. The method of claim 18 wherein replacing the dispatch server with the standby server comprises disconnecting the dispatch server from the network and allowing the standby server to take over the IP address of the dispatch server.
- 20. The method of claim 1 wherein dispatching the first client to the first conference on the first media server comprises transmitting an IP address associated with the first media server to the first client.
- 21. The method of claim 1 further comprising transmitting information regarding other participants in the first conference to the first client.
- 22. The method of claim 21 wherein transmitting information comprises adding a user to a user interface associated with the first client when a second client joins the first conference.
- 23. The method of claim 22 wherein transmitting information further comprises deleting the user from the user interface when the second client leave s the first conference.
- 24. The method of claim 1 further comprising where an event associated with the first media server occurs, dynamically recreating the first conference on a second media server.
- 25. The method of claim 24 wherein dynamically recreating the first conference comprises statelessly dispatching each participant in the first conference to the second media server.
- 26. The method of claim 24 wherein the event comprises a failure of the first media server.
- 27. The method of claim 24 wherein the event relates to a capacity of the first media server.
- 28. The method of claim 1 further comprising monitoring latency data relating to the first conference.
- 29. The method of claim 28 further comprising adjusting a capacity associated with the first media server in response to the latency data.
- 30. A system for facilitating communication between a plurality of clients on a network, comprising:
a plurality of media servers coupled to the network, each media server being for facilitating at least one conference, each of the conferences corresponding to a subset of the plurality of clients; and a dispatch server coupled to the network for statelessly dispatching the clients to the conferences on the media servers, the dispatch server being operable in response to a request from a first one of the clients to join a first conference to do one of determine which of the media servers is facilitating the first conference, and trigger creation of the first conference on a first one of the media servers where the first conference is not currently being facilitated.
- 31. The system of claim 30 further comprising an authentication server for receiving an initial request from the first client to join the first conference, validating the initial request, and dispatching the first client to the dispatch server.
- 32. The system of claim 30 further comprising a standby server for replacing the dispatch server where an operational status of the dispatch server indicates a failure.
- 33. The system of claim 32 further comprising a local area network connecting the standby and dispatch servers for communicating the operational status.
- 34. A dispatch server for facilitating communication between a plurality of clients on a network using a plurality of media servers on the network, comprising:
a server object; a remote server service running on the server object for providing access to the server object; and a master service running on the server object for communicating with and managing operation of the media servers in a stateless manner, the master service also being for statelessly dispatching the plurality of clients to conferences on the media servers.
- 35. The dispatch server of claim 34 further comprising a client host service running on the server object for facilitating connection of the plurality of clients with the dispatch server.
- 36. The dispatch server of claim 34 further comprising a slave service for communicating with the master service.
- 37. A media server for facilitating communication between a plurality of clients on a network in conjunction with a dispatch server on the network, comprising:
a server object; a remote server service running on the server object for providing access to the server object; a slave service running on the server object for communicating with the dispatch server; a mesh service running on the server object for dynamically providing virtual connections among the plurality of clients for transmission of data and thereby facilitating a conference including the plurality of clients, the virtual connections being dynamically created using a plurality of connection objects; and a connect service running on the server object for configuring the connection objects in the mesh service to provide the virtual connections.
- 38. The media server of claim 37 further comprising a client host service running on the server object for facilitating connection of the plurality of clients with the media server.
- 39. A method for facilitating a first conference between a plurality of clients on a network, comprising:
receiving a request to join a first conference from a first one of the plurality of clients via the network; in response to the request, determining whether the first conference is currently being facilitated on any of a plurality of media servers; where the first conference is currently being facilitated on a first one of the plurality of media servers, statelessly dispatching the first client to the first conference on the first media server; and where the first conference is not currently being facilitated on any of the plurality of media servers, triggering creation of the first conference on a second one of the plurality of media servers and statelessly dispatching the first client to the first conference on the second media server.
- 40. A mesh service for running on a server object on a media server, the media server for facilitating a plurality of conferences among a plurality of clients, the mesh service for dynamically providing virtual connections among the plurality of clients and thereby facilitating the conferences, the mesh service comprising:
a receiver object for each type of media handled by the mesh service, the receiver object being operable to receive first data packets from each of the plurality of clients, and convert the first data packets to data units; a plurality of scheduler objects coupled to the receiver object, each of the scheduler objects being associated with one of the plurality of clients, each scheduler object being operable to receive the data units from the receiver object, select first data units corresponding to the associated client from among the data units, and schedule when the first data units should be transmitted; a plurality of sorter objects coupled to the scheduler objects, each of the sorter objects being associated with one of the conferences, each sorter object being operable to receive the first data units from selected ones of the scheduler objects associated with the associated conference, and organize the first data units according to priorities; a plurality of filter objects coupled to sorter objects, each of the filter objects being associated with one of the plurality of clients, each filter object being operable to receive the first data units from each of the sorter objects, and select second data units from among the first data units, the second data units excluding any of the first data units corresponding to the associated client; and a plurality of sender objects coupled to the filter objects, each of the sender objects being associated with one of the plurality of clients, each sender object being operable to receive the second data units from one of the filter objects which corresponds to the associated client, convert the second data units into second data packets, and transmit the second data packets to the associated client.
- 41. The mesh service of claim 40 wherein the receiver, scheduler, sorter, filter and sender objects are derived from a common connection object comprising an input method for subscribing to an output of a first connection object and receiving data units therefrom, an output method for transmitting the data units to a second connection object subscribing to the output method, and a clock method for moving the data units from the input method to the output method.
- 42. A mesh service for running on a media server, the media server for facilitating communication among a plurality of clients, the mesh service comprising:
a receiver object for receiving first data packets and converting the first data packets to data units; a scheduler object for receiving the data units, selecting first data units corresponding to an associated client from among the data units, and scheduling when the first data units should be transmitted; a sorter object for receiving the first data units, and organizing the first data units according to priorities; a filter object for receiving the first data units, and selecting second data units from among the first data units, the second data units excluding any of the first data units corresponding to an associated client; and a sender object for receiving the second data units, converting the second data units into second data packets, and transmitting the second data packets to an associated client; wherein the receiver, scheduler, sorter, filter, and sender objects are each derived from a common connection object and are dynamically configured to provide virtual connections among the plurality of clients.
- 43. A mesh service for running on a media server, the media server for facilitating communication among a plurality of clients, the mesh service comprising:
a receiver object for receiving first data packets and converting the first data packets to data units; a scheduler object for receiving the data units, selecting first data units corresponding to an associated client from among the data units, and scheduling when the first data units should be transmitted; and a sender object for receiving the first data units, converting the first data units into second data packets, and transmitting the second data packets to an associated client; wherein the receiver, scheduler, and sender objects are each derived from a common connection object and are dynamically configured to provide virtual connections among the plurality of clients.
- 44. A mesh service for running on a media server, the media server for facilitating communication among a plurality of clients, the mesh service comprising a plurality of instances of a connection object class comprising an input method for subscribing to an output of a first connection object and receiving data units therefrom, an output method for transmitting the data units to a second connection object subscribing to the output method, and a clock method for moving the data units from the input method to the output method, wherein the plurality of instances of the connection object class are dynamically configured to provide virtual connections among the plurality of clients.
- 45. A method for facilitating communication among a plurality of clients on a media server, comprising dynamically configuring a plurality of instances of a connection object to provide virtual connections among the plurality of clients, the connection object class comprising an input method for subscribing to an output of a first connection object and receiving data units therefrom, an output method for transmitting the data units to a second connection object subscribing to the output method, and a clock method for moving the data units from the input method to the output method.
- 46. The method of claim 45 wherein the plurality of instances of the connection object class comprises a receiver object for receiving first data packets and converting the first data packets to data units, a plurality of scheduler objects for selecting first data units corresponding to an associated client from among the data units, and scheduling when the first data units should be transmitted, and a plurality of sender objects for receiving the scheduled first data units, converting the selected first data units into second data packets, and transmitting the second data packets to an associated client, and wherein dynamically configuring the plurality of instances comprises coupling the receiver object to the scheduler objects and coupling the scheduler objects to the sender objects.
- 47. The method of claim 46 wherein the plurality of instances of the connection object class further comprises a plurality of sorter objects for organizing the first data units according to priorities, each of the sorter objects corresponding to an associated conference, the connection object class further comprising a plurality of filter objects for excluding any of the first data units corresponding to an associated client thereby resulting in the selected first data units, and wherein coupling the scheduler objects to the sender objects is done using the sorter and filter objects.
- 48. A method for facilitating a first conference on a network between a first client and at least one other client, comprising:
transmitting a first request to join the first conference to a dispatch server via the network; receiving a dispatch command from the dispatch server, the dispatch command identifying a first one of a plurality of media servers; transmitting a second request to join the first conference to the first media server in response to the dispatch command from the dispatch server; and establishing a connection with the first media server by which the first client may participate in the first conference.
- 49. A computer program product for facilitating a first conference on a network between a first client and at least one other client, comprising:
at least one computer readable medium; computer program instructions embedded in the at least one computer readable medium for causing a computer to: transmit a first request to join the first conference to a dispatch server via the network; receive a dispatch command from the dispatch server, the dispatch command identifying a first one of a plurality of media servers; transmit a second request to join the first conference to the first media server in response to a dispatch command from the dispatch server; and establish a connection with the first media server by which the first client may participate in the first conference.
- 50. The computer program product of claim 49 wherein the computer program instructions comprise a browser plug-in.
- 51. The computer program product of claim 50 wherein the browser plug-in comprises a DLL.
- 52. The computer program product of claim 50 wherein the browser plug-in comprises an OCX.
- 53. A method for transmitting the computer program instructions of claim 49, comprising:
storing the computer program instructions onto a computer-usable medium; receiving a request for transmission of the computer program instructions; and transmitting the computer program instructions over a network to a remote location.
- 54. A computer data signal embodied in a carrier wave and representing program instructions which, when executed by a processor, cause the processor to facilitate a first conference on a network between a first client and at least one other client by:
transmitting a first request to join the first conference to a dispatch server via the network; receiving a dispatch command from the dispatch server, the dispatch command identifying a first one of a plurality of media servers; transmitting a second request to join the first conference to the first media server in response to a dispatch command from the dispatch server; and establishing a connection with the first media server by which the first client may participate in the first conference.
- 55. A method for facilitating a first conference on a network between a first client and at least one other client, comprising:
transmitting a graphical user interface to the first client via the network, the graphical user interface including an object corresponding to the first conference; and transmitting first data to the first client via the network, the first data identifying a remote conferencing system, the remote conferencing system including a plurality of media servers coupled to the network, and a dispatch server coupled to the network for statelessly dispatching the first client to the first conference on one of the media servers, the dispatch server being operable in response to a request from the first client to join the first conference to do one of determine which of the media servers is facilitating the first conference, and create the first conference on a first one of the media servers where the first conference is not currently being facilitated.
RELATED APPLICATION DATA
[0001] The present application is a continuation-in-part of U.S. patent application Ser. No. 09/312,927 for FACILITATING REAL-TIME, MULTI-POINT COMMUNICATIONS OVER THE INTERNET filed on May 17, 1999, which claims priority from U.S. Provisional Application No. 60/128,037 for FACILITATING REAL-TIME, MULTI-POINT COMMUNICATIONS OVER THE INTERNET filed on Apr. 6, 1999, the entireties of which are incorporated herein by reference for all purposes.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60128037 |
Apr 1999 |
US |
Divisions (1)
|
Number |
Date |
Country |
| Parent |
09432885 |
Nov 1999 |
US |
| Child |
09777462 |
Feb 2001 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
| Parent |
09312927 |
May 1999 |
US |
| Child |
09432885 |
Nov 1999 |
US |