IP Library Granted Patent US 10,291,607
Granted Patent B1
US 10,291,607 · App. 15/224,341 · Granted May 14, 2019

Providing real-time events to applications

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 10,291,607
App. No.
15/224,341
Granted
May 14, 2019
Kind
B1
Abstract

The present disclosure describes systems and methods for an app provider to deliver information—such as notifications, alerts, messages, and other data—between client devices without the use of a third-party push token. When receivers are connected to the app provider system, the app provider will deliver a notification and the communication to the receivers without the use of a third-party push token. When receivers are not connected to the app provider system, the app provider may cache communications and notifications until the next time the receiver connects to the app provider.

Claims (47)

1. A system, comprising:

a hardware processor configured to:

receive, at one of a plurality of nodes in a system, a connection request from a first client device, wherein the connection request includes authentication information;

determine whether the first client device has previously connected to the system;

when the first client device has not previously connected to the system, authenticate the first client device using the authentication information contained in the connection request;

after the first client device is authenticated, generate an ephemeral identifier for the first client device by concatenating a node identifier with hashed identifying information of the first client device, wherein the node identifier uniquely identifies the node to which the first client device is connected to amongst the plurality of nodes in the system;

bind the first client device to the generated ephemeral identifier; and

create an entry in a distributed routing table for the first client device that includes the ephemeral identifier;

provide the entry to the plurality of nodes in the system to update the distributed routing table located on each of the plurality of nodes;

maintain an incoming message queue to store one or more communications received from a plurality of second client devices; and

deliver, via a secure channel, a first communication from the incoming message queue to the first client device based on the entry for the first client device in the distributed routing table; and

a memory coupled to the hardware processor and configured to provide the hardware processor with instructions.

2. The system of claim 1 , wherein the authentication information includes a username and password.

3. The system of claim 2 , wherein the hardware processor is further configured to:

compare the username and password received from the first client device to a username and password maintained by the system.

4. The system of claim 1 , wherein the authentication information includes a blob of data indicating that the password entered by the user on the first client device matches the password stored locally on the device.

5. The system of claim 1 , wherein the secure channel is established when the first client device is successfully authenticated.

6. A method comprising:

receiving, at one of a plurality of nodes in a system, a connection request from a first client device, wherein the connection request includes authentication information;

determining, by one of a plurality of nodes in a system, whether the first client device has previously connected to the system;

when the first client device has not previously connected to the system, authenticating the first client device using the authentication information contained in the connection request;

after the first client device is authenticated, generating an ephemeral identifier for the first client device by concatenating a node identifier with hashed identifying information of the first client device, wherein the node identifier uniquely identifies the node to which the first client device is connected to amongst the plurality of nodes in the system;

binding the first client device to the generated ephemeral identifier;

creating an entry in a distributed routing table for the first client device that includes the ephemeral identifier;

providing the entry to the plurality of nodes in the system to update the distributed routing table located on each of the plurality of nodes;

maintaining an incoming message queue to store one or more communications received from a plurality of second client devices; and

delivering, via a secure channel, a first communication from the incoming message queue to the first client device based on the entry for the first client device in the distributed routing table.

7. The method of claim 6 , wherein the authentication information includes a username and password.

8. The method of claim 7 , further comprising:

comparing the username and password received from the first client device to a username and password maintained by the system.

9. The method of claim 6 , wherein the authentication information includes a blob of data indicating that the password entered by the user on the first client device matches the password stored locally on the device.

10. The method of claim 6 , wherein the secure channel is established when the first client device is successfully authenticated.

11. A non-transitory computer-readable medium comprising instructions that when, executed by at least one hardware processor, perform the steps of:

receiving, at one of a plurality of nodes in a system, a connection request from a first client device, wherein the connection request includes authentication information;

determining whether the first client device has previously connected to the system;

when the first client device has not previously connected to the system, authenticating the first client device using the authentication information contained in the connection request;

after the first client device is authenticated, generating an ephemeral identifier for the first client device by concatenating a node identifier with hashed identifying information of the first client device, wherein the node identifier uniquely identifies the node to which the first client device is connected to amongst the plurality of nodes in the system;

binding the first client device to the generated ephemeral identifier; and

creating an entry in a distributed routing table for the first client device that includes the ephemeral identifier;

providing the entry to the plurality of nodes in the system to update the distributed routing table located on each of the plurality of nodes;

maintaining an incoming message queue to store one or more communications received from a plurality of second client devices; and

delivering, via a secure channel, a first communication from the incoming message queue to the first client device based on the entry for the first client device in the distributed routing table.

12. The non-transitory computer-readable medium of claim 11 , wherein the authentication information includes a username and password.

13. The non-transitory computer-readable medium of claim 12 , further comprising instructions for:

comparing the username and password received from the first client device to a username and password maintained by the system.

14. The non-transitory computer-readable medium of claim 11 , wherein the authentication information includes a blob of data indicating that the password entered by the user on the first client device matches the password stored locally on the device.

15. The non-transitory computer-readable medium of claim 11 , wherein the secure channel is established when the first client device is successfully authenticated.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2021
From: WICKR LLC
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 057366/0573 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 25, 2021
From: SILICON VALLEY BANK
To: WICKR INC.
Reel/Frame 056684/0366 →
SECURITY AGREEMENT Recorded Dec 12, 2017
From: WICKR INC.
To: SILICON VALLEY BANK
Reel/Frame 044872/0729 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2016
From: CIFELLI, MATTHEW; HILL-PERCIVAL, ROY
To: WICKR INC.
Reel/Frame 039515/0433 →
Cited By (5)
US 12,488,017 US 12,574,370 US 12,656,752 US 12,675,830 US 12,681,464