US 12,224,882 B2
System and method for tunneling network requests to a device via a persistent connection
Andrew Walters, Castroville, CA (US); Peter Macdonald, Foster City, CA (US); Gladys Wong, Fremont, CA (US); and James Armand Baldwin, Palo Alto, CA (US)
Assigned to Domatic, Inc., Palo Alto, CA (US)
Filed by Domatic, Inc., Palo Alto, CA (US)
Filed on Oct. 12, 2022, as Appl. No. 17/964,255.
Claims priority of provisional application 63/255,367, filed on Oct. 13, 2021.
Prior Publication US 2023/0112657 A1, Apr. 13, 2023
Int. Cl. H04L 12/46 (2006.01); H04L 67/1004 (2022.01)
CPC H04L 12/4641 (2013.01) [H04L 67/1004 (2013.01)] 19 Claims
OG exemplary drawing
 
1. A method of establishing a persistent connection between a client and a device, wherein the client is connected to the Internet and wherein the device is connected to a private network, wherein the private network comprises at least one server, comprising:
a. turning on a device;
b. connecting the device to a first server instance;
c. using the first server instance to listen on a port accessible from the private network, wherein the port is not accessible from the outside;
d. recording in memory an association between the device, the first server instance, and the port;
e. if a network request to access the device is received from the client, performing the following actions:
i. routing the network request to a second server instance, wherein the second server instance is one of the following: a server instance distinct from the first server instance, the first server instance;
ii. using the second server instance to check whether the client is authorized to access the device;
iii. using the second server instance to look up the first server instance and port associated with the device;
iv. using the second server instance to establish a connection to the first server instance and the port;
v. using the first server instance to proxy the network request to the connection between the second server instance and the first server instance;
vi. on the device, routing the network connection to an application or service running on the device.