IP Library Granted Patent US 11,283,725
Granted Patent B2
US 11,283,725 · App. 17/068,490 · Granted Mar 22, 2022

Event content delivery

Inventors: Jie Jin (San Francisco, CA); Dustin Norlander (San Francisco, CA)
Assignee: Twitter, Inc.
H04L47/82G06F9/542H04L67/24
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 11,283,725
App. No.
17/068,490
Granted
Mar 22, 2022
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for delivering event content. One of the methods includes initiating, for one or more client devices, a subscription to a topic; receiving an event relevant to a topic; determining a number of channel servers that correspond to the topic, wherein each channel server is associated with one or more client devices; determining that the number of channel servers that correspond to the topic is greater than a threshold number of channel servers; writing the received event from the event processor to an event fan-out queue, in response to the determination that the number of channel servers that correspond to the topic is greater than the threshold number of channel servers; reading the received event from the event fan-out queue; and sending the received event to the one or more client devices associated with each respective channel server.

Claims (70)

1. A method comprising:

receiving, at an event processor, an event relevant to a topic;

determining, from among a collection of channel servers, a plurality of channel servers that are handling the topic, wherein each channel server handles one or more topics subscribed to by one or more client devices;

determining, using a number of the plurality of channel servers handling the topic, whether to distribute the received event using an event fan-out queue; and

in response to determining to distribute the received event using the event fan-out queue:

writing the received event from the event processor to the event fan-out queue, wherein the event fan-out queue is accessible by the plurality of channel servers;

reading, by each of the plurality of channel servers, the received event from the event fan-out queue; and

for each of the plurality of channel servers, sending the received event from the channel server to one or more particular client devices subscribed to the topic.

2. The method of claim 1 , further comprising initiating, for each of the one or more client devices, a subscription to the topic.

3. The method of claim 2 , wherein initiating, for each of the one or more client devices, the subscription to the topic comprises:

receiving, from each of the one or more client devices, one or more subscription requests, wherein the one or more subscription requests include the topic; and

initiating one or more subscriptions to the topic for the one or more client devices in response to the one or more received subscription requests, including, for each initiated subscription, adding a session identifier associated with the client device to a mapping of session identifiers to topics.

4. The method of claim 3 , wherein initiating the subscription includes sending a configuration packet to the client device, wherein the configuration packet includes one or more subscription timers unique to the client device.

5. The method of claim 4 , wherein the one or more subscription timers indicate that a user associated with the client device is idle, and wherein being idle can include the user not interacting with their client device for more than a threshold amount of time.

6. The method of claim 1 , wherein sending the received event from the plurality of channel servers to the one or more particular client devices associated with each respective channel server comprises:

determining that the one or more particular client devices are not idle; and

sending the received event from the channel server to the one or more particular client devices associated with the channel server.

7. The method of claim 1 , further comprising:

determining that one or more first client devices are idle; and

dissociating one or more channel servers from the one or more idle first client devices.

8. The method of claim 7 , further comprising:

determining that the one or more first client devices are no longer idle; and

reassociating the one or more channel servers with the one or more first client devices.

9. A system comprising:

a plurality of channel servers each configured to send events relevant to a topic to one or more client devices subscribed to the topic;

an event fan-out queue configured to communicate an event relevant to the topic to each of the plurality of channel servers; and

an event processor configured to route the event to the event fan-out queue, wherein the event processor is configured to perform operations in response to receiving an event relevant to the topic comprising:

determining, using a number of the plurality of channel servers, whether to distribute the event using the event fan-out queue; and

in response to determining to distribute the received event using the event fan-out queue:

writing the received event from the event processor to the event fan-out queue, wherein the event fan-out queue is accessible by the plurality of channel servers;

reading, by each of the plurality of channel servers, the received event from the event fan-out queue; and

for each of the plurality of channel servers, sending the received event from the channel server to one or more particular client devices subscribed to the topic.

10. The system of claim 9 , further comprising an edge server that is configured to initiate, for each of the one or more client devices, a subscription to the topic.

11. The system of claim 10 , wherein initiating, for each of the one or more client devices, the subscription to the topic comprises:

receiving, from each of the one or more client devices, one or more subscription requests, wherein the one or more subscription requests include the topic; and

initiating one or more subscriptions to the topic for the one or more client devices in response to the one or more received subscription requests, including, for each initiated subscription, adding a session identifier associated with the client device to a mapping of session identifiers to topics.

12. The system of claim 11 , wherein initiating the subscription includes sending a configuration packet to the client device, wherein the configuration packet includes one or more subscription timers unique to the client device.

13. The system of claim 12 , wherein the one or more subscription timers indicate that a user associated with the client device is idle, and wherein being idle can include the user not interacting with their client device for more than a threshold amount of time.

14. The system of claim 9 , wherein sending the received event from the plurality of channel servers to the one or more particular client devices associated with each respective channel server comprises:

determining that the one or more particular client devices are not idle; and

sending the received event from the channel servers to the one or more particular client devices associated with the channel server.

15. The system of claim 9 , wherein the channel servers are each further configured to perform operations comprising:

determining that one or more first client devices are idle; and

dissociating from the one or more idle first client devices.

16. The system of claim 15 , wherein the channel servers are each further configured to perform operations comprising:

determining that the one or more first client devices are no longer idle; and

reassociating with the one or more first client devices.

17. One or more computer storage media encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising:

receiving, at an event processor, an event relevant to a topic;

determining, from among a collection of channel servers, a plurality of channel servers that are handling the topic, wherein each channel server handles one or more topics subscribed to by one or more client devices;

determining, using a number of the plurality of channel servers handling the topic, whether to distribute the received event using an event fan-out queue; and

in response to determining to distribute the received event using the event fan-out queue:

writing the received event from the event processor to the event fan-out queue, wherein the event fan-out queue is accessible by the plurality of channel servers;

reading, by each of the plurality of channel servers, the received event from the event fan-out queue; and

for each of the plurality of channel servers, sending the received event from the channel server to one or more particular client devices subscribed to the topic.

18. The computer storage media of claim 17 , wherein the operations further comprise initiating, for each of the one or more client devices, a subscription to the topic.

19. The computer storage media of claim 18 , wherein initiating, for each of the one or more client devices, the subscription to the topic comprises:

receiving, from each of the one or more client devices, one or more subscription requests, wherein the one or more subscription requests include the topic; and

initiating one or more subscriptions to the topic for the one or more client devices in response to the one or more received subscription requests, including, for each initiated subscription, adding a session identifiers associated with the client device to a mapping of session identifiers to topics.

20. The computer storage media of claim 19 , wherein initiating the subscription includes sending a configuration packet to the client device, wherein the configuration packet includes one or more subscription timers unique to the client device.

21. The computer storage media of claim 20 , wherein the one or more subscription timers indicate that a user associated with the client device is idle, and wherein being idle can include the user not interacting with their client device for more than a threshold amount of time.

22. The computer storage media of claim 17 , wherein sending the received event from the plurality of channel servers to the one or more particular client devices associated with each respective channel server comprises:

determining that the one or more particular client devices are not idle; and

sending the received event from the channel server to the one or more particular client devices associated with the channel server.

23. The computer storage media of claim 17 , wherein the operations further comprise:

determining that one or more first client devices are idle; and

dissociating one or more channel servers from the one or more idle first client devices.

24. The computer storage media of claim 23 , wherein the operations further comprise:

determining that the one or more first client devices are no longer idle; and

reassociating the one or more channel servers with the one or more first client devices.

Assignments (7)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (REEL 062079, FRAME 0677) Recorded Mar 3, 2026
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 075015/0574 →
RELEASE OF SECURITY INTEREST Recorded Apr 30, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 071127/0240 →
RELEASE OF SECURITY INTEREST Recorded Mar 27, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: X CORP. (F/K/A TWITTER, INC.)
Reel/Frame 070670/0857 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0001 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 061804/0086 →
SECURITY INTEREST Recorded Oct 28, 2022
From: TWITTER, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 062079/0677 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2021
From: JIN, JIE; NORLANDER, DUSTIN
To: TWITTER, INC.
Reel/Frame 057153/0984 →