IP Library Granted Patent US 11,687,610
Granted Patent B2
US 11,687,610 · App. 16/781,861 · Granted Jun 27, 2023

Application remoting across a network using draw commands

Inventors: Darren Remington (Mesa, AZ); Trevor Sundberg (Kirkland, WA); Killian Koenig (Seattle, WA); Benjamin Buzbee (Woodinville, WA); Michael Conrad (Monroe, WA); David Harnett (Seattle, WA)
Assignee: CLOUDFLARE, INC.
G06F16/9574G06F9/452G06F16/9577G06F16/972G06F16/986G06F21/629G06F21/6245G06F21/6281G06F21/71G06F40/14H04L67/131
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,687,610
App. No.
16/781,861
Granted
Jun 27, 2023
Kind
B2
Abstract

A server receives from a client device that is executing a client application a request to initiate a remote application in the server. The server instantiates an instance of the remote application. The server intercepts draw commands associated with the remote application instance. The server provides the draw commands to the client to cause the client application to render portion(s) of output based on the draw commands. The server receives an input event from the client application. The server provides the client one or more draw commands based on the input event to cause the client application to render portion(s) of output based on those draw commands.

Claims (56)

1. A non-transitory computer-readable medium that provides instructions that, when executed by a processor, cause the processor to perform operations, comprising:

instantiating an instance of a remote application in a server, the remote application instance being instantiated responsive to a request from a client device remote from the server;

intercepting, at the remote application instance, a first set of one or more draw commands associated with output of the remote application instance, the first set of one or more draw commands including a first set of vector commands;

providing the first set one or more draw commands to the client device to cause a client application executing on the client device to render one or more portions of output on the client application based on the first set of vector commands;

receiving, at the remote application instance, an input event from the client application; and

providing a second set of one or more draw commands to the client device, the second set of one or more draw commands including a second set of vector commands to cause the client application to render one or more portions of output on the client application based on the second set of vector commands.

2. The non-transitory computer-readable medium of claim 1 , wherein the request from the client device is a request for a network resource.

3. The non-transitory computer-readable medium of claim 1 , wherein instantiating the instance of the remote application in the server comprises:

providing a packet to the client device, the packet containing initial logic and a key for establishing a secure connection between the server and the client application executing on the client device.

4. The non-transitory computer-readable medium of claim 1 , wherein instantiating the instance of the remote application in the server comprises:

determining characteristics of the client device based on the request from the client device, the determined characteristics of the client device indicating one or more of a client device operating system version and a client application version; and

instantiating the instance of the remote application in the server based on the determined characteristics of the client device.

5. The non-transitory computer-readable medium of claim 1 , wherein instantiating the instance of the remote application in the server comprises:

performing code execution for the remote application instance in a sandboxed environment.

6. The non-transitory computer-readable medium of claim 1 , wherein intercepting the first set of one or more draw commands associated with output of the remote application instance comprises:

evaluating one or more hierarchical rules against characteristics of one or more of the remote application instance, the client device, and the client application to determine an appropriate interception technique for intercepting the first set of one or more draw commands.

7. The non-transitory computer-readable medium of claim 1 , wherein the instructions further cause the processor to perform operations, comprising:

providing a set of one or more files to the client device based on the request, the set of one or more files including information that configures the client application executing on the client device to display output of the remote application instance.

8. A computer-implemented method comprising:

instantiating an instance of a remote application in a server, the remote application instance being instantiated responsive to a request from a client device remote from the server;

intercepting, at the remote application instance, a first set of one or more draw commands associated with output of the remote application instance, the first set of one or more draw commands including a first set of vector commands;

providing the first set one or more draw commands to the client device to cause a client application executing on the client device to render one or more portions of output on the client application based on the first set of vector commands;

receiving, at the remote application instance, an input event from the client application; and

providing a second set of one or more draw commands to the client device, the second set of one or more draw commands including a second set of vector commands to cause the client application to render one or more portions of output on the client application based on the second set of vector commands.

9. The computer-implemented method of claim 8 , wherein the request from the client device is a request for a network resource.

10. The computer-implemented method of claim 8 , wherein instantiating the instance of the remote application in the server comprises:

providing a packet to the client device, the packet containing initial logic and a key for establishing a secure connection between the server and the client application executing on the client device.

11. The computer-implemented method of claim 8 , wherein instantiating the instance of the remote application in the server comprises:

determining characteristics of the client device based on the request from the client device, the determined characteristics of the client device indicating one or more of a client device operating system version and a client application version; and

instantiating the instance of the remote application in the server based on the determined characteristics of the client device.

12. The computer-implemented method of claim 8 , wherein instantiating the instance of the remote application in the server comprises:

performing code execution for the remote application instance in a sandboxed environment.

13. The computer-implemented method of claim 8 , wherein intercepting the first set of one or more draw commands associated with output of the remote application instance comprises:

evaluating one or more hierarchical rules against characteristics of one or more of the remote application instance, the client device, and the client application to determine an appropriate interception technique for intercepting the first set of one or more draw commands.

14. The computer-implemented method of claim 8 , further comprising:

providing a set of one or more files to the client device based on the request, the set of one or more files including a JavaScript file, a rendering support file containing compiled draw commands, and a Hypertext Markup Language (“HTML”) file that include information that configures the client application executing on the client device to display output of the remote application instance.

15. A apparatus, comprising:

a processor;

a non-transitory machine-readable storage medium coupled with the processor that stores instructions that, when executed by the processor, causes said processor to perform the following:

instantiate an instance of a remote application in a server, the remote application instance being instantiated responsive to a request from a client device remote from the server;

intercept, at the remote application instance, a first set of one or more draw commands associated with output of the remote application instance, the first set of one or more draw commands including a first set of vector commands;

provide the first set one or more draw commands to the client device to cause a client application executing on the client device to render one or more portions of output on the client application based on the first set of vector commands;

receive, at the remote application instance, an input event from the client application; and

provide a second set of one or more draw commands to the client device, the second set of one or more draw commands including a second set of vector commands to cause the client application to render one or more portions of output on the client application based on the second set of vector commands.

16. The apparatus of claim 15 , wherein the request from the client device is a request for a network resource.

17. The apparatus of claim 15 , wherein instantiating the instance of the remote application in the server further causes said processor to:

provide a packet to the client device, the packet containing initial logic and a key for establishing a secure connection between the server and the client application executing on the client device.

18. The apparatus of claim 15 , wherein instantiating the instance of the remote application in the server further causes said processor to:

determine characteristics of the client device based on the request from the client device, the determined characteristics of the client device indicating one or more of a client device operating system version and a client application version; and

instantiate the instance of the remote application in the server based on the determined characteristics of the client device.

19. The apparatus of claim 15 , wherein instantiating the instance of the remote application in the server further causes said processor to.

perform code execution for the remote application instance in a sandboxed environment.

20. The apparatus of claim 15 , wherein intercepting the first set of one or more draw commands associated with output of the remote application instance further causes said processor to:

evaluate one or more hierarchical rules against characteristics of one or more of the remote application instance, the client device, and the client application to determine an appropriate interception technique for intercepting the first set of one or more draw commands.

21. The apparatus of claim 15 , wherein the instructions further cause said processor to perform the following:

provide a set of one or more files to the client device based on the request, the set of one or more files including a JavaScript file, a rendering support file containing compiled draw commands, and a Hypertext Markup Language (“HTML”) file that include information that configures the client application executing on the client device to display output of the remote application instance.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2025
From: REMINGTON, DARREN; SUNDBERG, TREVOR; KOENIG, KILLIAN; BUZBEE, BENJAMIN; CONRAD, MICHAEL; HARNETT, DAVID
To: CLOUDFLARE, INC.
Reel/Frame 070152/0842 →
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
Continuity (3)
Provisional Application 62800948 · Feb 4, 2019
Provisional Application 62800937 · Feb 4, 2019
Related Publication 20200250372A1 · Aug 6, 2020