Connecting communicating devices in a multi-server communication system
First Claim
1. A processor-implemented method comprising:
- receiving, at a computer system hosting an application and comprising a plurality of communication servers, a first connection at a first communication server from a first device, each communication server of the plurality of communication servers operative to host a server version of the application and having one or more associated addresses;
updating a first session table at the first communication server, the first session table identifying one or more connections between a device and the computer system and which of the plurality of the communication servers is a termination point for a given connection;
receiving via the first connection a communication directed to a second device;
determining, by the first communication server from the first session table, whether the second device is connected to any communication server in the system;
when the second device is not connected to any communication server in the system;
selecting one or more addresses of the first communication server from the addresses of all of the plurality of communication servers;
dispatching toward the second device a notification of the communication, wherein the notification comprises the selected addresses of the first communication server of the first connection within the system when the second device is not connected to any communication server in the system; and
receiving, at the first communication server, a second connection from the second device; and
when the second device is connected to any communication server in the system;
identifying, by the first communication server from the first session table, a second communication server to which the second device is connected; and
sending the communication from the first communication server to the second device via the second communication server.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and methods are provided for aggregating communication connections. Multiple users connect to a system (e.g., a web-based system) that hosts an application or service for exchanging communications. Users who exchange communications among themselves may be considered “associates.” When one user who is on-line with the application sends a communication through the system for an associate, the system determines whether the associate is on-line or off-line. If the associate is off-line, the system crafts and sends toward the associate a notification regarding the communication, including an address of the communication server to which the one user is connected. When the associate'"'"'s device receives the notification, the application may attempt to connect to the specified address. In this way associated users'"'"' connections will aggregate or gravitate toward the same communication server, thereby eliminating the latency and cost of exchanging users'"'"' communications between multiple communication servers.
35 Citations
16 Claims
-
1. A processor-implemented method comprising:
-
receiving, at a computer system hosting an application and comprising a plurality of communication servers, a first connection at a first communication server from a first device, each communication server of the plurality of communication servers operative to host a server version of the application and having one or more associated addresses; updating a first session table at the first communication server, the first session table identifying one or more connections between a device and the computer system and which of the plurality of the communication servers is a termination point for a given connection; receiving via the first connection a communication directed to a second device; determining, by the first communication server from the first session table, whether the second device is connected to any communication server in the system; when the second device is not connected to any communication server in the system; selecting one or more addresses of the first communication server from the addresses of all of the plurality of communication servers; dispatching toward the second device a notification of the communication, wherein the notification comprises the selected addresses of the first communication server of the first connection within the system when the second device is not connected to any communication server in the system; and receiving, at the first communication server, a second connection from the second device; and when the second device is connected to any communication server in the system; identifying, by the first communication server from the first session table, a second communication server to which the second device is connected; and sending the communication from the first communication server to the second device via the second communication server. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to:
-
receive, at a first communication server of a plurality of communication servers in a computer system hosting an application, a first connection from a first device; update a first session table at the first communication server, the first session table identifying one or more connections between a device and the plurality of communication servers and which of the plurality of the communication servers is a termination point for a given connection; receive via the first connection a communication directed to a second device; determine, by the first communication server from the first session table, whether the second device is connected to any communication server in the system; when the second device is not connected to any communication server in the system; select one or more addresses of the first communication server from addresses of all of the plurality of communication servers; dispatch toward the second device a notification of the communication, wherein the notification comprises the selected addresses of the first communication server of the first connection within the system when the second device is not connected to any communication server in the system; and receive, at the first communication server, a second connection from the second device; and when the second device is connected to any communication server in the system; identify, by the first communication server from the first session table, a second communication server to which the second device is connected; and send the communication from the first communication server to the second device via the second communication server.
-
-
7. A method comprising:
-
receiving, at multiple servers, connections from multiple devices, each server of the multiple servers operative to host a server version of an application and having one or more associated addresses; for each connection received at a server, updating a session table at each of the multiple servers, the session table identifying one or more connections between a device and the multiple servers and which server of the multiple servers is a termination point for a given connection; and for each communication received from an on-line device connected to a first server for a destination device that is off-line from the application; determining, by the first server from the session table of the first server, whether the destination device is connected to any server of the multiple servers; when the destination device is not connected to any server of the multiple servers; selecting, from the addresses of all of the multiple servers, one or more addresses of the first server to which the on-line device is connected; transmitting toward the destination device a notification of the communication, wherein the notification comprises the selected one or more addresses; and receiving at a selected address a connection request from the destination device; and for each communication received from the on-line device for a destination device connected to a second server;
identifying, by the first server from the session table of the first server, the second server to which the second device is connected; andsending the communication from the first server to the destination device via the second server. - View Dependent Claims (8, 9)
-
-
10. A system for comprising:
-
multiple communication servers configured to host an application and maintain communication connections with the devices; and a state server configured to store, for each of multiple devices; user data enabling the system to contact the device; and session data identifying, for each device connected to the system, the communication server with which the device is connected; wherein each communication server of the multiple communication servers is operative to host a server version of the application, having one or more associated addresses, and comprises; a processor; application logic executable by the processor to facilitate an exchange of communications among the devices, to receive a communication from a first device connected to the communication server directed to a second device, update the session table at the state server identifying the communication server as a termination point for the connection, receive an updated session table from the state server identifying other communication servers as termination points for connections with other devices, determine from the session table whether the second device is connected to any communication server in the system, identify from the session table a second communication server to which the second device is connected, and to send the communication to the second device via the second communication server when the second device is connected to a second communication server; and notification logic executable by the processor to send notifications regarding the communications toward the devices, when the second device is not connected to any of the communication servers, and to include in a notification to the second device, regarding a communication received for the second device from the first device, an address of the communication server with which the first device is connected, the address selected from the addresses of all of the multiple communication servers. - View Dependent Claims (11, 12, 13, 14, 15, 16)
-
Specification