Pixel perfect real-time web application framework
Uložené v:
| Názov: | Pixel perfect real-time web application framework |
|---|---|
| Patent Number: | 10409,565 |
| Dátum vydania: | September 10, 2019 |
| Appl. No: | 15/475089 |
| Application Filed: | March 30, 2017 |
| Abstrakt: | A system and methods for a real-time web application framework including a server controlled real-time web application with synchronized server components mapped to client widgets, a method for modal execution support in a real-time web application environment, a pixel perfect designer having a designer, an image renderer, and server components, the image renderer configured to render a client widget based on the properties of a server component, and a theming system implemented by the real-time web application during run-time. |
| Inventors: | ICE TEA GROUP LLC (Washington, DC, US) |
| Assignees: | ICE TEA GROUP LLC (Washington, DC, US) |
| Claim: | 1. A method of providing a real-time web application, comprising: mapping one or more server components to a plurality of corresponding client widgets, and synchronizing, with a middleware, each of the server components with the corresponding client widget; wherein the synchronizing each of the server components with the corresponding client widget includes: receiving and processing, by a server, a state and event request message, the message comprising: state data of the client widgets, wherein the state data contains differential state data of each client widget running in the application, the differential state data reflecting changes occurred in each of the client widgets since a previous state and event message, and event data, wherein the event data includes a collection of triggered registered events, the client's pointer location, key code state, widget-specific data, and event specific data; and updating, in memory, the server components based on the differential state data of each of the corresponding client widgets; dispatching each triggered registered event to a corresponding server component, the server component corresponding to the client widget in which the registered event was triggered; processing and executing application specific instructions in a handler, each triggered registered event having a corresponding handler; determining, based on the state data and event data, whether each of the server components must be modified, or destroyed, or a new server component must be created, resulting in a collection of dirty components; updating, in memory, the state properties of each of the client widgets, wherein the state properties represent a last known state of each of the client widgets; and preparing and sending a state and event response message, to a client, the message including updated widget definitions, and a list of instructions based on the collection of dirty components, the list instructing the client to modify or destroy existing client widgets or create new client widgets, wherein the message is formatted in JSON format and the client does not change appearance of the web application unless instructed to by the server; and wherein the synchronizing each of the server components with a corresponding widget includes: listening and processing, by a client, of a state and event response message from the server, the listening and processing comprising: executing a list of instructions in the state and event response message, the executing resulting in newly created client widgets or updates to existing client widgets, the updates and newly created client widgets according to widget definitions contained in the state and event response message. |
| Claim: | 2. The method according to claim 1 , wherein the mapping the one or more server components further comprises: providing within the one or more server components, a map between properties of the components and properties of the corresponding client widgets, resulting in mapped properties wherein the mapped properties of each server component include a unique identifier and a class name of the corresponding client widget. |
| Claim: | 3. The method according to claim 1 , further comprising loading the web application, by a server, the loading including: receiving, from a client, a request to load the web application; collecting resources belonging to the web application; loading, in server memory, the web application, the web application having one or more server components; defining one or more client widgets corresponding to each of the server components of the web application, resulting in definitions for the one or more client widgets, the definitions including widget state properties, events, identifiers, and class data; storing, in memory, the widget state properties of each of the client widgets, wherein the state properties represent a last known state of each of the client widgets; registering for events, resulting in a set of registered events that the client shall be instructed to notify the server about; generating instructions, for a client, the instructions including actions for the client to create the one or more client widgets according to the definitions in a client browser; packaging an application load response, the application load response containing the instructions, the definitions, and the registered events; and sending, to the client, the application load response. |
| Claim: | 4. The method according to claim 3 , further comprising processing, by a client, the application load response, the processing including: receiving the application load response; and executing the instructions in the application load response, resulting in updates to existing client widgets or newly created client widgets, the updates and newly created client widgets according to the definitions in the application load response. |
| Claim: | 5. The method according to claim 1 , further comprising instructing, by the server, the client to load resources, the instructing including: receiving a bootstrap request from the client, the bootstrap request containing client data, the data including browser type and capabilities, client system information, and application information; determining system resources and application specific resources that a client requires, based on the client data; packaging in a bootstrap response, the system resources and application specific resources required by the client, in the form of URLs to the client; and sending to the bootstrap response to the client. |
| Claim: | 6. The method according to claim 1 , wherein the state and event message further comprises instructions to begin modal execution, and the receiving and processing, by the server, further comprises: creating, by the server, a first thread to process the state and event request message; pausing, by the first thread, the processing and execution of the application specific instructions at the point where a modal event instruction is encountered; creating and activating, by the first thread, a modal server component; adding to the state and event response message, instructions to create a modal client widget, the modal client widget corresponding to the modal server component; suspending execution and waiting, by the first thread, for the modal server component to be deactivated; creating, by the server, an additional thread to receive and process an additional state and event request message, upon receipt of the additional state and event request message, the additional message including instructions to end modal execution; deactivating, by the additional thread, the modal server component, resulting in a release of the first thread; suspending execution and waiting, by the additional thread, for the modal component to become unlocked; waking and locking, by the first thread, the modal component; resuming, by the first thread, the processing and executing application specific instructions at the point where the first thread was previously paused; unlocking, by the first thread, the modal component, resulting in the release of the additional thread; and updating and sending, by the additional thread, a subsequent state and event response message, the subsequent message including instructions to terminate the modal widget. |
| Claim: | 7. A method of providing a real-time web application, comprising: mapping one or more server components to a plurality of corresponding client widgets, and synchronizing, with a middleware, each of the server components with the corresponding client widget, wherein the synchronizing each of the server components with the corresponding widget comprises: listening, by a client, for a triggering of registered events, the registered events belonging to client widgets; responding, by a client, to the triggering, the responding comprising: pausing the web application in a browser, gathering event data, the event data including client system data, client input device states, event-specific information and client widget-specific information, entering the event data in an event request queue, setting an event request timer for 20 to 100 milliseconds, and resuming the web application in the browser; and responding, by a client, to the event request timer, asynchronously, comprising: determining if there is any pending event data in the event request queue, removing any pending event data from the event request queue, and producing differential widget data, the producing comprising: collecting a current value of the state properties from each of the widgets identified in the list of changed widgets resulting in a collection of current values, and determining each difference between each current value with a previously stored value of each widget in the list of changed widgets, resulting in differential widget data; packaging any pending event data and differential widget data into a state and event request message, and sending the state and event request message and the differential widget data to the server; wherein the synchronizing each of the server components with a corresponding widget includes: listening and processing, by a client, of a state and event response message from the server, the listening and processing comprising: executing a list of instructions in the state and event response message, the executing resulting in newly created client widgets or updates to existing client widgets, the updates and newly created client widgets according to widget definitions contained in the state and event response message. |
| Patent References Cited: | 8458612 June 2013 Chatterjee 2012/0047425 February 2012 Ahmed 2013/0246944 September 2013 Pandiyan 2014/0143310 May 2014 Peled 2015/0264423 September 2015 Torgemane 2017/0039180 February 2017 Pruitt |
| Other References: | Clausen et al., (2009) “Eclipse RCP on the way to the Web” Proceedings of ICALEPCS2009 Kobe, Japan, THP, pp. 886-888. cited by applicant Aurelial et al., (2014) “Integrated Development Environment for Remote Application Platform, Eclipse Rap—A Case Study” Advances in Information Science and Applications—vol. II, pp. 505-510. cited by applicant |
| Primary Examiner: | Patel, Manglesh M |
| Attorney, Agent or Firm: | Steinfl + Bruno, LLP |
| Prístupové číslo: | edspgr.10409565 |
| Databáza: | USPTO Patent Grants |
| Abstrakt: | A system and methods for a real-time web application framework including a server controlled real-time web application with synchronized server components mapped to client widgets, a method for modal execution support in a real-time web application environment, a pixel perfect designer having a designer, an image renderer, and server components, the image renderer configured to render a client widget based on the properties of a server component, and a theming system implemented by the real-time web application during run-time. |
|---|