IP Library › Granted Patent US 12,586,125
Granted Patent B2
US 12,586,125 · App. 17/826,955 · Granted Mar 24, 2026

Method and system for reduced latency in a scalable, multi-user, publish-subscribe architecture

Inventors: Logan Head (Marina Del Rey, CA); Alexander Loukissas (Los Angeles, CA)
Assignee: WHATNOT, INC.
G06Q30/08H04L51/216
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 12,586,125
App. No.
17/826,955
Granted
Mar 24, 2026
Kind
B2
Abstract

Systems and method may implement a publish/subscribe messaging framework for distributing messages among a plurality of mobile computing devices. A particular “publish/subscribe channel” may be implemented in the context of an auction for one or more items, e.g., collectibles such as trading cards, toys, and/or figurines. The implementation of the publish/subscribe messaging framework may allow for real-time communications of developments in the auction(s) which, in combination with a real-time video stream from a host to a plurality of guests in the channel, amounts to an improved user experience at host devices and guest devices. Additional computing techniques may supplement the implementation of the live auction channel, said computing techniques providing improved scalability for live auction channels comprising hundreds or even thousands of guests.

Claims (52)

1 . One or more servers comprising:

one or more processors; and

one or more memories storing non-transitory computer executable instructions that, when executed via the one or more processors, cause the one or more servers to:

establish a publish/subscribe channel associated with a host client computing device and a plurality of guest client computing devices, the publish/subscribe channel enabling the one or more servers to exchange, with the host device and the plurality of guest devices, information regarding an auction of a particular item by subscribing each of the plurality of guest devices to automatically receive messages published by the one or more servers responsive to changes in a state of the auction, the publishing of the messages by the one or more servers causing each of the plurality of guest devices to automatically update a display of the information regarding the auction upon receiving the messages;

receive, at an incoming message queue of the one or more servers, via the publish/subscribe channel, a plurality of bid messages associated with the auction of the particular item, each of the bid messages respectively indicating a bid value and originating from a respective one of the plurality of guest devices;

responsive to detection of one or more conditions at the one or more servers, use a batch processing routine to create a subset of the received plurality of bid messages, and analyze the subset of bid messages to select a leading bid message from among the subset of bid messages;

store the analyzed subset of bid messages to the memory of the one or more servers, wherein storing the analyzed subset of bid messages includes storing the analyzed subset of messages to a cache memory of the one or more servers;

responsive to detection of one or more conditions associated with the cache memory, transfer the analyzed subset of bid messages to a long-term memory of the one or more servers;

obtain, from a memory of the one or more servers, a current highest bid value associated with the auction of the particular item;

compare the obtained current highest bid value to the selected bid message to determine whether the selected bid message from among the subset constitutes a new highest bid for the auction of the particular item; and

process the selected bid message from among the subset, based upon the comparison.

2 . The one or more servers of claim 1 , wherein the instructions to process the selected bid message based upon the comparison include instructions to, responsive to determining that the selected bid message constitutes a new highest bid for the auction of the particular item:

update the current highest bid value at the memory of the one or more servers to reflect the new highest bid; and

generate and transmit, to the host device and to each of the plurality of guest devices via the publish/subscribe channel, a message indicating the new highest bid.

3 . The one or more servers of claim 2 , wherein the instructions to process the selected bid message based upon the comparison further include instructions to, responsive to determining that the selected bid message constitutes a new highest bid for the auction of the particular item:

update a timer associated with the auction of the particular item,

and wherein the transmitted message comprises an indication of the updated auction timer.

4 . The one or more servers of claim 1 , wherein the instructions to process the selected bid message based upon the comparison include instructions to, responsive to determining that the selected bid message does not constitute a new highest bid for the auction of the particular item:

generate and transmit, to a particular guest device from among the plurality of guest devices, a message indicating failure of the selected bid message, the particular guest device being a client computing device from which the selected bid message originated.

5 . The one or more servers of claim 1 , wherein the detection of one or more conditions at the one or more servers comprises a detection of passing of a predetermined time interval.

6 . The one or more servers of claim 1 , wherein the detection of one or more conditions at the one or more servers comprises a detection of the incoming message queue meeting or exceeding a predetermined threshold number of messages.

7 . The one or more servers of claim 1 , wherein the detection of one or more conditions at the one or more servers comprises a detection of an incoming message rate at the one or more servers meeting or exceeding a predetermined threshold rate.

8 . The one or more servers of claim 1 , wherein the non-transitory computer executable instructions, when executed via the one or more processors, further cause the one or more servers to associate a respective timestamp value with each of the plurality of received bid messages.

9 . A computer-implemented method comprising:

establishing, via one or more processors of one or more servers, a publish/subscribe channel associated with a host client computing device and a plurality of guest client computing devices, the publish/subscribe channel enabling the one or more servers to exchange, with the host device and the plurality of guest devices, information regarding an auction of a particular item by subscribing each of the plurality of guest devices to automatically receive messages published by the one or more servers responsive to changes in a state of the auction, the publishing of the messages by the one or more servers causing each of the plurality of guest devices to automatically update a display of the information regarding the auction upon receiving the messages;

receiving, via the one or more processors, at an incoming message queue of the one or more servers, via the publish/subscribe channel, a plurality of bid messages associated with the auction of the particular item, each of the bid messages respectively indicating a bid value and originating from a respective one of the plurality of guest devices;

responsive to detection of one or more conditions at the one or more servers, using, via the one or more processors, a batch processing routine to create a subset of the received plurality of bid messages, and analyzing, via the one or more processors, the subset of bid messages to select a leading bid message from among the subset of bid messages;

storing the analyzed subset of bid messages to a memory of the one or more servers, wherein storing the analyzed subset of bid messages includes storing the analyzed subset of messages to a cache memory of the one or more servers;

responsive to detection of one or more conditions associated with the cache memory, transferring the analyzed subset of bid messages to a long-term memory of the one or more servers;

obtaining, via the one or more processors, from a memory of the one or more servers, a current highest bid value associated with the auction of the particular item;

comparing, via the one or more processors, the obtained current highest bid value to the selected bid message to determine whether the selected bid message from among the subset constitutes a new highest bid for the auction of the particular item; and

via the one or more processors, processing the selected bid message from among the subset, based upon the comparison.

10 . The computer-implemented method of claim 9 , wherein processing the selected bid message based upon the comparison includes, responsive to determining that the selected bid message constitutes a new highest bid for the auction of the particular item:

updating, via the one or more processors, the current highest bid value at the memory of the one or more servers to reflect the new highest bid; and

generating and transmitting, via the one or more processors, to the host device and to each of the plurality of guest devices via the publish/subscribe channel, a message indicating the new highest bid.

11 . The computer-implemented method of claim 10 , wherein processing the selected bid message based upon the comparison further includes, responsive to determining that the selected bid message constitutes a new highest bid for the auction of the particular item:

updating, via the one or more processors, a timer associated with the auction of the particular item, and wherein the transmitted message comprises an indication of the updated auction timer.

12 . The computer-implemented method of claim 9 , wherein processing the selected bid message based upon the comparison includes, responsive to determining that the selected bid message does not constitute a new highest bid for the auction of the particular item:

generating and transmitting, via the one or more processors, to a particular guest device from among the plurality of guest devices, a message indicating failure of the selected bid message, the particular guest device being a client computing device from which the selected bid message originated.

13 . The computer-implemented method of claim 9 , wherein detecting the one or more conditions at the one or more servers comprises detecting a passing of a predetermined time interval.

14 . The computer-implemented method of claim 9 , wherein detecting the one or more conditions at the one or more servers comprises detecting the incoming message queue meeting or exceeding a predetermined threshold number of messages.

15 . The computer-implemented method of claim 9 , wherein detecting the one or more conditions at the one or more servers comprises detecting an incoming message rate at the one or more servers meeting or exceeding a predetermined threshold rate.

16 . The computer-implemented method of claim 9 , further comprising, via the one or more processors, associating a respective timestamp value with each of the plurality of received bid messages.

17 . One or more computer readable media storing non-transitory computer executable instructions that, when executed via one or more processors of one or more servers, cause the one or more servers to:

establish a publish/subscribe channel associated with a host client computing device and a plurality of guest client computing devices, the publish/subscribe channel enabling the one or more servers to exchange, with the host device and the plurality of guest devices, information regarding an auction of a particular item by subscribing each of the plurality of guest devices to automatically receive messages published by the one or more servers responsive to changes in a state of the auction, the publishing of the messages by the one or more servers causing each of the plurality of guest devices to automatically update a display of the information regarding the auction upon receiving the messages;

receive, at an incoming message queue of the one or more servers, via the publish/subscribe channel, a plurality of bid messages associated with the auction of the particular item, each of the bid messages respectively indicating a bid value and originating from a respective one of the plurality of guest devices;

responsive to detection of one or more conditions at the one or more servers, use a batch processing routine to create a subset of the received plurality of bid messages, and analyze the subset of bid messages to select a leading bid message from among the subset of bid messages;

store the analyzed subset of bid messages to a memory of the one or more servers, wherein storing the analyzed subset of bid messages includes storing the analyzed subset of messages to a cache memory of the one or more servers;

responsive to detection of one or more conditions associated with the cache memory, transfer the analyzed subset of bid messages to a long-term memory of the one or more servers;

obtain, from a memory of the one or more servers, a current highest bid value associated with the auction of the particular item;

compare the obtained current highest bid value to the selected bid message to determine whether the selected bid message from among the subset constitutes a new highest bid for the auction of the particular item; and

process the selected bid message from among the subset, based upon the comparison.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 31, 2022
From: HEAD, LOGAN; LOUKISSAS, ALEXANDER
To: WHATNOT INC.
Reel/Frame 060053/0271 →
Continuity (2)
Provisional Application 63194482 · May 28, 2021
Related Publication 20220383405A1 · Dec 1, 2022
References Cited (17)
US 8527392B2 · Levy · 2013 [cited by examiner]
US 20060112003A1 · Levy et al. · 2006 [cited by applicant]
US 20070214056A1 · Xue · 2007 [cited by examiner]
US 20090099939A1 · Thakur et al. · 2009 [cited by applicant]
US 20100325004A1 · Schoettle · 2010 [cited by applicant]
US 20120130843A1 · Himmerick et al. · 2012 [cited by applicant]
US 20130066977A1 · Katti · 2013 [cited by examiner]
US 20150178823A1 · Tanaka · 2015 [cited by examiner]
US 20150363837A1 · Lewis · 2015 [cited by examiner]
US 20180060945A1 · Hammond · 2018 [cited by applicant]
US 20180276743A1 · Charles · 2018 [cited by examiner]
US 20200226676A1 · Hamor · 2020 [cited by applicant]
US 20200320518A1 · Simas · 2020 [cited by examiner]
US 20220394316A1 · Liu · 2022 [cited by examiner]
Das, R. K., Nayak, S. K., Bhoi, S. K., Choudhury, S. K., Majhi, B., & Mohanty, S. (2016). BSEA: A blind sealed-bid E-auction scheme for E-commerce applications. Computers, 5(4), 32. doi:http://dx.doi.org/10.3390/compute… [cited by examiner]
How to Build an Online Realtime Bidding/Auction System with React. Namratha Subramanya. Jul. 16, 2018. https://hackernoon.com/how-to-build-an-online-realtime-bidding-auction-system-with-react-925cc5aa7937 (Year: 2018). [cited by examiner]
A focus group study of consumer motivations for eshopping: UK versus Malaysia. Yusniza Kamarulzaman. African Journal of Business Management vol. 5(16), pp. 6778-6784, Aug. 18, 2011. Doi: 10.5897/AJBM11.1135 . (Year: 201… [cited by examiner]