IP Library Granted Patent US 9,756,089
Granted Patent B2
US 9,756,089 · App. 13/596,520 · Granted Sep 5, 2017

Maintain persistent connections between servers and mobile clients

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,756,089
App. No.
13/596,520
Granted
Sep 5, 2017
Kind
B2
Abstract

In one embodiment, a method includes iteratively waiting for a time interval; sending a keep-alive message from a first computing device to a second computing device; and incrementing a current value of the time interval when the first computing device receives from the second computing device a response to a current keep-alive message sent during the current iteration, until the first computing device does not receive from the second computing device any responses to the current keep-alive message sent during the current iteration; and setting the current value of the time interval to a previous value of the time interval from an immediately-previous iteration.

Claims (57)

1. A method comprising:

determining an initial value for a time interval for sending keep-alive messages from a client computing device connected to a server computing device on a particular one of a plurality of generations of cellular data connection, wherein the time interval is based on an average value or a median value of keep-alive message time interval values determined from previous connections between the server computing device and one or more other computing devices different from the client computing device on the particular one of the plurality of generations of cellular data connection; and

iteratively:

waiting for the time interval;

sending a keep-alive message from the client computing device to the server computing device; and

incrementing a current value of the time interval when the client computing device receives from the server computing device a response to a current keep-alive message sent during a current iteration, until the client computing device does not receive from the server computing device any responses to the current keep-alive message sent during the current iteration; and

setting the current value of the time interval to a previous value of the time interval from an immediately-previous iteration.

2. The method of claim 1 , wherein:

the client computing device is a mobile client associated with a user of a social network; and

the server computing device is a server associated with the social network.

3. The method of claim 1 , wherein incrementing the current value of the time interval comprises adding a constant value to the current value of the time interval.

4. The method of claim 1 , wherein incrementing the current value of the time interval comprises doubling the current value of the time interval.

5. The method of claim 1 , further comprising

iteratively:

waiting for the time interval;

sending the keep-alive message from the client computing device to the server computing device; and

decrementing the current value of the time interval when the client computing device does not receive from the server computing device any responses to the current keep-alive message sent during the current iteration, until the client computing device receives from the server computing device the response to the current keep-alive message sent during the current iteration.

6. The method of claim 1 , further comprising periodically sending keep-alive messages from the client computing device to the server computing device at each time interval to maintain a persistent connection between the client computing device and the server computing device.

7. The method of claim 1 , wherein determining the initial value for the time interval is further based on a day or time at which the keep-alive message time interval values were determined for the connections between the server computing device and the one or more other computing devices.

8. One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

determine an initial value for a time interval for sending keep-alive messages from a client computing device connected to a server computing device on a particular one of a plurality of generations of cellular data connection, wherein the time interval is based on an average value or a median value of keep-alive message time interval values determined from previous connections between the server computing device and one or more other computing devices different from the client computing device on the particular one of the plurality of generations of cellular data connection; and

iteratively:

wait for the time interval;

send a keep-alive message from the client computing device to the server computing device; and

increment a current value of the time interval when the client computing device receives from the server computing device a response to a current keep-alive message sent during a current iteration, until the client computing device does not receive from the server computing device any responses to the current keep-alive message sent during the current iteration; and

set the current value of the time interval to a previous value of the time interval from an immediately-previous iteration.

9. The media of claim 8 , wherein:

the client computing device is a mobile client associated with a user of a social network; and

the server computing device is a server associated with the social network.

10. The media of claim 8 , wherein increment the current value of the time interval comprises add a constant value to the current value of the time interval.

11. The media of claim 8 , wherein increment the current value of the time interval comprises double the current value of the time interval.

12. The media of claim 8 , wherein the software is further operable when executed to

iteratively:

wait for the time interval;

send the keep-alive message from the client computing device to the server computing device; and

decrement the current value of the time interval when the client computing device does not receive from the server computing device any responses to the current keep-alive message sent during the current iteration, until the client computing device receives from the server computing device the response to the current keep-alive message sent during the current iteration.

13. The media of claim 8 , wherein the software is further operable when executed to periodically send keep-alive messages from the client computing device to the server computing device at each time interval to maintain a persistent connection between the client computing device and the server computing device.

14. A client computing device comprising:

one or more processors; and

a memory coupled to the processors comprising instructions executable by the processors, the processors operable when executing the instructions to:

determine an initial value for a time interval for sending keep-alive messages from a client computing device connected to a server computing device on a particular one of a plurality of generations of cellular data connection, wherein the time interval is based on an average value or a median value of keep-alive message time interval values determined from previous connections between the server computing device and one or more other computing devices different from the client computing device on the particular one of the plurality of generations of cellular data connection; and

iteratively:

wait for the time interval;

send a keep-alive message from the client computing device to the server computing device; and

increment a current value of the time interval when the client computing device receives from the server computing device a response to a current keep-alive message sent during the current iteration, until the client computing device does not receive from the server computing device any responses to a current keep-alive message sent during the current iteration; and

set the current value of the time interval to a previous value of the time interval from an immediately-previous iteration.

15. The client computing device of claim 14 , wherein:

the client computing device is a mobile client associated with a user of a social network; and

the server computing device is a server associated with the social network.

16. The client computing device of claim 14 , wherein increment the current value of the time interval comprises add a constant value to the current value of the time interval.

17. The client computing device of claim 14 , wherein increment the current value of the time interval comprises

double the current value of the time interval.

18. The client computing device of claim 14 , wherein the processors are further operable when executing the instructions to

iteratively:

wait for the time interval;

send the keep-alive message from the client computing device to the server computing device; and

decrement the current value of the time interval when the client computing device does not receive from the server computing device any responses to the current keep-alive message sent during the current iteration, until the client computing device receives from the server computing device the response to the current keep-alive message sent during the current iteration.

Assignments (3)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058553/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2012
From: BROOK, PETER DANIEL; TALWAR, MOHIT
To: FACEBOOK, INC.
Reel/Frame 029051/0253 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2012
From: BROOK, PETER DANIEL; TALWAR, MOHIT
To: FACEBOOK, INC.
Reel/Frame 028943/0823 →