Method for flow control and for reliable communication in a collaborative environment
First Claim
1. A method of providing reliable communications, comprising:
- providing a client layer that remotely accesses a service over a network connection;
providing a server layer that proxies communications between the client layer and the service;
facilitating full duplex communications between the client layer and the server layer by implementing a service protocol in a first channel for communication between the client layer and the server layer, and the service protocol in a second channel for communication between the server layer and the client layer;
communicating first sequence acknowledgement messages over the first channel that include a first sequence number of a last message received from the server;
communicating, in response to the first sequence acknowledgment messages, second sequence acknowledgement messages over the second channel that include a second sequence number of a last message received from the client;
detecting a failure of communication on the first channel or the second channel by sending keep alive messages from the service to the client layer and from client layer to the service, and if one of the client layer or service does not receive the keep alive messages within a predetermined period of time, determining that the first channel or the second channel on which the keep alive messages have not been received has failed; and
upon detecting the failure on the first channel or the second channel, reestablishing communication using the service protocol and either a last first sequence number received by the server layer or a last second sequence number received by the client layer.
2 Assignments
0 Petitions
Accused Products
Abstract
Flow control of messages to/from clients and services in a remote access system. Within the remote access system a layered architecture may be provided that includes a client layer at a client device, a service layer associated with a service, and a server layer that is a communications proxy for messages sent between the client device and the service. The service layer may have a receive queue for messages received from the client device and a send queue of messages destined for the client device. The server layer may include an outbound queue of messages destined for the client device. Full duplex communications between the client layer and the server layer may be implemented using a service protocol in a first channel for communication between the client layer and the server layer and a second channel for communication between the server layer and the client layer.
-
Citations
18 Claims
-
1. A method of providing reliable communications, comprising:
-
providing a client layer that remotely accesses a service over a network connection; providing a server layer that proxies communications between the client layer and the service; facilitating full duplex communications between the client layer and the server layer by implementing a service protocol in a first channel for communication between the client layer and the server layer, and the service protocol in a second channel for communication between the server layer and the client layer; communicating first sequence acknowledgement messages over the first channel that include a first sequence number of a last message received from the server; communicating, in response to the first sequence acknowledgment messages, second sequence acknowledgement messages over the second channel that include a second sequence number of a last message received from the client; detecting a failure of communication on the first channel or the second channel by sending keep alive messages from the service to the client layer and from client layer to the service, and if one of the client layer or service does not receive the keep alive messages within a predetermined period of time, determining that the first channel or the second channel on which the keep alive messages have not been received has failed; and upon detecting the failure on the first channel or the second channel, reestablishing communication using the service protocol and either a last first sequence number received by the server layer or a last second sequence number received by the client layer. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for reliable messaging between a service and a client, comprising:
-
listening, at the client, for periodic keep alive messages that are communicated by the service on a first half-duplex channel; listening, at the service, for periodic keep alive messages that are communicated by the client on a second half-duplex channel; communicating messages between the client and the sever over the first half-duplex channel and the second half-duplex channel, wherein each message contains a unique message sequence number; communicating a sequence acknowledgement message between the client and the service in response to the messages over the first half-duplex channel and the second half-duplex channel, the sequence acknowledgement message containing the unique message sequence number that was last successfully received by the service and the client; detecting a communication failure on the first half-duplex channel or the second half-duplex channel if the periodic keep alive messages are not received at the client after a predetermined period of time in order to determine that the first half-duplex channel or the second half-duplex channel on which the keep alive messages have not been received has failed; reestablishing, by the client, communication with the service over a new first half-duplex channel or a new second half-duplex channel in accordance with the detecting; and communicating, by the service, messages over the first half-duplex channel or the new first half-duplex channel beginning with a unique sequence number that is after a unique sequence number associated with a last sequence acknowledgement message received by the service. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A method for reliable messaging between a service and a client, comprising:
-
listening, at the client, for periodic keep alive messages that are communicated by the service on a first half-duplex channel; listening, at the service, for periodic keep alive messages that are communicated by the client on a second half-duplex channel; communicating messages from the client to the service over the second half-duplex channel in response to associated previous messages communicated from the service to the client, wherein each message contains a unique message sequence number; detecting a communication failure on the first half-duplex channel or the second half-duplex channel if the periodic keep alive messages are not received at the client after a predetermined period of time in order to determine that the first half-duplex channel or the second half-duplex channel on which the keep alive messages have not been received has failed; reestablishing, by the client, communication with the service over a new first half-duplex channel or new second half-duplex channel in accordance with the detecting; and resuming communicating messages from the client to the service over the second half-duplex channel or the new second half-duplex channel in accordance with a last unique message sequence number received by the client. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification