Remote execution of applications over a dispersed network
First Claim
Patent Images
1. A non-transitory computer-readable medium comprising a program having instructions that, when executed, cause at least one computing device to:
- obtain a request to launch an application from a client over a network;
identify a plurality of candidate application hosts;
select an application host from the plurality of candidate application hosts;
transmit a first message to the application host, wherein the first message comprises an instruction directing the application host to initiate execution of the application;
obtain a media stream from a wrapper for the application that is installed on the application host and emulates an output device for the application host, wherein the media stream comprises an audio stream and a video stream;
forward the media stream from the application host to the client;
obtain a plurality of input commands from the client over the network, wherein a portion of the plurality of input commands comprise metadata indicating a temporal position of the video stream with which the ones of the plurality of input commands are associated;
forward the plurality of input commands to the application host;
obtain state data from the application host, wherein the state data comprises data corresponding to a state of the execution of the application;
monitor a plurality of performance characteristics associated with the execution of the application;
identify a plurality of successive application hosts, wherein the plurality of performance characteristics of individual ones of the plurality of successive application hosts exceed the performance characteristics of the application host;
select one of the plurality of successive application hosts; and
transmit a second message to the one of the plurality of successive application hosts, wherein the second message comprises a portion of the state data and a second instruction directing the one of the plurality of successive application hosts to initiate a successive execution of the application based at least in part on at least the portion of the state data.
1 Assignment
0 Petitions
Accused Products
Abstract
Disclosed are various embodiments of a server application that facilitates selecting a computing device in which to host execution of an application. The selected application host provides application output to a client, and the client provides application input to the application host. In some embodiments, the application server may be a communications proxy between the client and a remote application host.
-
Citations
19 Claims
-
1. A non-transitory computer-readable medium comprising a program having instructions that, when executed, cause at least one computing device to:
-
obtain a request to launch an application from a client over a network; identify a plurality of candidate application hosts; select an application host from the plurality of candidate application hosts; transmit a first message to the application host, wherein the first message comprises an instruction directing the application host to initiate execution of the application; obtain a media stream from a wrapper for the application that is installed on the application host and emulates an output device for the application host, wherein the media stream comprises an audio stream and a video stream; forward the media stream from the application host to the client; obtain a plurality of input commands from the client over the network, wherein a portion of the plurality of input commands comprise metadata indicating a temporal position of the video stream with which the ones of the plurality of input commands are associated; forward the plurality of input commands to the application host; obtain state data from the application host, wherein the state data comprises data corresponding to a state of the execution of the application; monitor a plurality of performance characteristics associated with the execution of the application; identify a plurality of successive application hosts, wherein the plurality of performance characteristics of individual ones of the plurality of successive application hosts exceed the performance characteristics of the application host; select one of the plurality of successive application hosts; and transmit a second message to the one of the plurality of successive application hosts, wherein the second message comprises a portion of the state data and a second instruction directing the one of the plurality of successive application hosts to initiate a successive execution of the application based at least in part on at least the portion of the state data. - View Dependent Claims (2, 3)
-
-
4. A system, comprising:
-
at least one computing device comprising a hardware processor and a memory; and an application comprising machine readable instructions stored in the memory that, when executed by the hardware processor of the at least one computing device, causes the at least one computing device to at least; select an application host from a plurality of candidate application hosts; transmit a first message to the application host, wherein the first message comprises a first instruction directing the application host to initiate execution of an application and forward a media stream associated with the execution of the application to a client via a network, the media stream having been generated by a wrapper of the application installed on the application host that emulates an output device of the application host; transmit a second message to the client, wherein the second message comprises a second instruction directing the client to establish communications with the application host over the network, wherein the communications include a plurality of input commands generated by the client, wherein a portion of the plurality of input commands comprise metadata indicating a temporal position of the media stream with which the ones of the plurality of input commands are associated; obtain state data from the application host, wherein the state data comprises data corresponding to a state of the execution of the application; monitor a plurality of performance characteristics associated with an interactive execution of the application in the application host by the client; select one of a plurality of successive application hosts, wherein the plurality of performance characteristics of individual ones of the plurality of successive application hosts exceed the plurality of performance characteristics of the application host; and transmit a third message to the application host, wherein the third message comprises a portion of the state data and a third instruction directing the one of the plurality of successive application hosts to initiate a successive execution of the application based at least in part on at least the portion of the state data. - View Dependent Claims (5, 6, 7, 8, 9, 10)
-
-
11. A method, comprising:
-
selecting, in at least one computing device, an application host from a plurality of candidate application hosts; transmitting, in the at least one computing device, at least one message to the application host, wherein the at least one message comprises an instruction directing the application host to initiate execution of an application; obtaining over a network, in the at least one computing device, a video stream generated by a wrapper of the application installed on the application host that emulates an output device of the application host; obtaining, in the at least one computing device, a plurality of input commands from a client over the network, wherein a portion of the plurality of input commands comprise metadata indicating a temporal position of the video stream with which individual ones of the plurality of input commands are associated; obtaining, in the at least one computing device, state data from the application host, wherein the state data comprises data corresponding to a state of execution of the application; monitoring, in the at least one computing device, a plurality of performance characteristics associated with the execution of the application in the application host; and selecting, in the at least one computing device, a successive application host from a plurality of candidate successive application hosts, wherein the plurality of performance characteristics of individual ones of the plurality of candidate successive application hosts exceed the performance characteristics of the application host. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
Specification