IP Library Granted Patent US 9,602,450
Granted Patent B1
US 9,602,450 · App. 15/155,384 · Granted Mar 21, 2017

Maintaining persistence of a messaging system

Inventors: Andrey Kushnir (Sunnyvale, CA); Maksim Terekhin (Ulyanovsk, RU)
Assignee: Machine Zone, Inc.
H04L51/046G06Q10/107H04L51/10H04L51/16
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,602,450
App. No.
15/155,384
Granted
Mar 21, 2017
Kind
B1
Abstract

Methods, systems, and apparatus, including computer programs for receiving, from a first client device, a request for messages of a first channel of a plurality of channels starting at a position in the first channel, wherein each channel comprises a respective ordered plurality of messages stored in one or more respective buffers according to the order, each buffer having a respective time-to-live; receiving, from one of the second client devices, a response message comprising one or more messages of the first channel that are at or after the position in the order; and sending the messages to the first client device.

Claims (50)

1. A method comprising:

performing by one or more computers:

receiving, from a first client device, a request for messages of a first channel of a plurality of channels starting at a position in the first channel, wherein each channel comprises a respective ordered plurality of messages stored in one or more respective buffers according to the order, each buffer having a respective time-to-live;

identifying a first message in the first channel corresponding to the position in the order, wherein the first message is stored in a buffer having a time-to-live that has expired;

sending to one or more second client devices that subscribe to the first channel a request for messages beginning at the position in the order;

receiving, from one of the second client devices, a response message comprising one or more messages of the first channel that are at or after the position in the order;

retrieving messages for the first channel from one or more buffers of the first channel having time-to-lives that have not expired and according to the order;

combining the retrieved messages and the messages from the response message according to the order; and

sending the combined messages to the first client device.

2. The method of claim 1 , further comprising:

determining, for one or more of the second client devices subscribing to the first channel, respective connection latency to the first channel; and

identifying one of the second client devices that has a shortest connection latency.

3. The method of claim 1 , further comprising:

determining, for one or more second client devices subscribing to the first channel, time durations of respective current connection sessions to the first channel; and

identifying one of the second client devices having the longest current connection session among the one or more second client devices.

4. The method of claim 1 , wherein combining the retrieved message and the messages from the response message according to the order further comprises:

removing from the combined messages one or more duplicate messages.

5. A system comprising:

one or more computers programmed to perform operations comprising:

receiving, from a first client device, a request for messages of a first channel of a plurality of channels starting at a position in the first channel, wherein each channel comprises a respective ordered plurality of messages stored in one or more respective buffers according to the order, each buffer having a respective time-to-live;

identifying a first message in the first channel corresponding to the position in the order, wherein the first message is stored in a buffer having a time-to-live that has expired;

sending to one or more second client devices that subscribe to the first channel a request for messages beginning at the position in the order;

receiving, from one of the second client devices, a response message comprising one or more messages of the first channel that are at or after the position in the order;

retrieving messages for the first channel from one or more buffers of the first channel having time-to-lives that have not expired and according to the order;

combining the retrieved messages and the messages from the response message according to the order; and

sending the combined messages to the first client device.

6. The system of claim 5 wherein the operations further comprise:

determining, for one or more of the second client devices subscribing to the first channel, respective connection latency to the first channel; and

identifying one of the second client devices that has a shortest connection latency.

7. The system of claim 5 wherein the operations further comprise:

determining, for one or more second client devices subscribing to the first channel, time durations of respective current connection sessions to the first channel; and

identifying one of the second client devices having the longest current connection session among the one or more second client devices.

8. The system of claim 5 , wherein combining the retrieved message and the messages from the response message according to the order further comprises:

removing from the combined messages one or more duplicate messages.

9. A manufacture comprising a non-transitory computer-readable medium having instructions stored thereon that when executed by one or more computers causes the computers to perform operations comprising:

receiving, from a first client device, a request for messages of a first channel of a plurality of channels starting at a position in the first channel, wherein each channel comprises a respective ordered plurality of messages stored in one or more respective buffers according to the order, each buffer having a respective time-to-live;

identifying a first message in the first channel corresponding to the position in the order, wherein the first message is stored in a buffer having a time-to-live that has expired;

sending to one or more second client devices that subscribe to the first channel a request for messages beginning at the position in the order;

receiving, from one of the second client devices, a response message comprising one or more messages of the first channel that are at or after the position in the order;

retrieving messages for the first channel from one or more buffers of the first channel having time-to-lives that have not expired and according to the order;

combining the retrieved messages and the messages from the response message according to the order; and

sending the combined messages to the first client device.

10. The manufacture of claim 9 wherein the operations further comprise:

determining, for one or more of the second client devices subscribing to the first channel, respective connection latency to the first channel; and

identifying one of the second client devices that has a shortest connection latency.

11. The manufacture of claim 9 wherein the operations further comprise:

determining, for one or more second client devices subscribing to the first channel, time durations of respective current connection sessions to the first channel; and

identifying one of the second client devices having the longest current connection session among the one or more second client devices.

12. The manufacture of claim 9 , wherein combining the retrieved message and the messages from the response message according to the order further comprises:

removing from the combined messages one or more duplicate messages.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded May 19, 2020
From: COMERICA BANK
To: SATORI WORLDWIDE, LLC
Reel/Frame 052707/0769 →
RELEASE OF SECURITY INTEREST Recorded May 19, 2020
From: MGG INVESTMENT GROUP LP, AS COLLATERAL AGENT
To: MACHINE ZONE, INC.; SATORI WORLDWIDE, LLC; COGNANT LLC
Reel/Frame 052706/0917 →
SECURITY INTEREST Recorded May 22, 2018
From: SATORI WORLDWIDE, LLC
To: COMERICA BANK
Reel/Frame 046215/0159 →
NOTICE OF SECURITY INTEREST -- PATENTS Recorded Feb 2, 2018
From: MACHINE ZONE, INC.; SATORI WORLDWIDE, LLC; COGNANT LLC
To: MGG INVESTMENT GROUP LP, AS COLLATERAL AGENT
Reel/Frame 045237/0861 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2017
From: MACHINE ZONE, INC.
To: SATORI WORLDWIDE, LLC
Reel/Frame 044428/0652 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2016
From: KUSHNIR, ANDREY; TEREKHIN, MAKSIM
To: MACHINE ZONE, INC.
Reel/Frame 039030/0375 →