US20160006788A1 - Client-server-communication system running a client-side-script-program - Google Patents
Client-server-communication system running a client-side-script-program Download PDFInfo
- Publication number
- US20160006788A1 US20160006788A1 US14/788,976 US201514788976A US2016006788A1 US 20160006788 A1 US20160006788 A1 US 20160006788A1 US 201514788976 A US201514788976 A US 201514788976A US 2016006788 A1 US2016006788 A1 US 2016006788A1
- Authority
- US
- United States
- Prior art keywords
- client
- server
- data
- program
- communication system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H04L67/42—
Definitions
- the invention refers to client-server-communication system comprising a public network, especially the Internet, a server computer and a client computer.
- a public network especially the Internet
- server computer typically a server computer
- client computer typically a client computer
- remote desktop server scenario typically a remote desktop server scenario.
- GUI graphical user interface
- frameworks like Windows GDI (Graphics Device Interface), Xlib (X11) or Quartz 2D (Mac OS X).
- 3D programming interfaces like OpenGL or DirectX.
- Such interfaces will simply be called GDI subsequently in this document.
- basic GUI data can also represent commands to manipulate bitmaps which have been created before, or read from a device such as the disk drive.
- the mentioned frameworks are based on a set of so called geometric graphics Primitives, for example commands to draw a line, to fill a rectangle, or to draw an ellipse. They are usually processed by the graphics card incorporated into a computer, also called GPU (Graphics Processing Unit).
- GPU Graphics Processing Unit
- the software which generates the GDI-commands and the graphics card are in the same computer and are directly coupled.
- the graphics Primitives are redirected and sent over a network via an appropriate protocol, like RDP (Microsoft), X11 (X-Windows), ICA (Citrix) or PCoIP (Teradici).
- RDP Microsoft
- X11 X-Windows
- ICA Citrix
- PCoIP PCoIP
- the software generating the GDI-commands runs on one computer, namely the server computer.
- the graphic card together with some driver is running in another computer, namely the client computer, which shows the resulting graphics/pixels.
- the client and the server are connected by a network, which may be the public internet.
- Protocols which send GDI-commands, Primitives, OpenGL commands or DirectX commands over a network are X11-X-Windows, ICA from Citrix, RDP from Microsoft or PCoIP/PC-over-IP from Teradici.
- Web server computers are providing information, which is sent over a network, e.g. the public internet, to a Web browser running on a client computer, which browser displays the information.
- a network e.g. the public internet
- Web browsers either understand HTTP or the WebSocket protocol which are both based on TCP, but not other protocols that use TCP or UDP as transport layer, like the before mentioned remote desktop protocols x11, ICA, RDP or PCoIP.
- the browser shows the content of a Web page or result of a JavaScript program to the user and the user can input some data, with the keyboard or the mouse.
- the server (Web server) cannot update the Web page or send new data to the JavaScript program running in the browser, because of the half-duplex restriction of the HTTP.
- the WebSocket protocol introduced with HTML5, is defined in RFC 6455. This new protocol is full-duplex and so the client like a Web browser or the server, which may be a Web server or a gateway, can send data whenever it wants, not restricted to specific states.
- This compression is dictionary based (Deflate, GZIP). Compression of the primitives, bitmaps or other GUI commands/elements may be done by the server application, depending on the specific remote desktop protocol, prior to this Websocket based compression. This may greatly improve the efficiency of the transport of the commands from the server to the client, needed to display the GUI screen.
- Web browsers in general are able to download script programs—Client-Side-Script-Program—from the Web server and run these programs directly inside the Web browser, like JavaScript or VBScript (Visual Basic Script). The latter runs in the Microsoft Web browser “Internet Explorer”.
- the invention according to the features of claim 1 provides for a client-server-communication system that uses a basic concept to an improved handling of basic GUI data between a server and client computer, which system comprises
- the present invention is using above cited script program technologies, like JavaScript or VBScript, but it does not depend on the programming language supported by the Web browser.
- the functionality of the invention's program can be implemented in any programming language supported by Web browsers, whether already existing or possibly existing in the future.
- the application running on the server computer generates basic GUI-commands. These are sent by a WebSocket connection to the Web browser, and the inventions Client-Side-Script-Program, for example a JavaScript program, running in the browser, uses the application programming interfaces e.g. for Canvas 2D or WebGL to draw into the browsers display area—preferred embodiment of claim 2 .
- Such a server could be a Microsoft Windows Terminal Server using RDP, or a Unix system using the Xlib for drawing into remote clients display area directly.
- the basic GUI data are at least one of Primitives, OpenGL/GDI and DirectX commands which if necessary are emulated by the client-side-script-program.
- the I/O terminal data are handled by the client-side-script-program, especially this program handles the data transfer including the basic GUI data or I/O channel data over the WebSocket protocol in a compressed form, and in particular over a Special Remote Desktop Protocol—preferred embodiments of claims 4 and 5 .
- the client-side-script-program further on provides for one or more of following functionalities:
- bitmaps which are a collection of pixel data, may be sent from the Web server to the browser over WebSocket in compressed form.
- the compressed bitmaps are then expanded by the invention's client-side-script-program. This decompression may be done in software only or with the help of hardware like a GPU (Graphics Processing Unit).
- GPU Graphics Processing Unit
- the GUI data may contain raster operations (ROP) codes.
- ROP raster operations
- Such a ROP-code may be the operation XOR (bitwise exclusive OR).
- This XOR means, the resulting bits generated from the GDI-commands or Primitives are XOR calculated with the old content of the destination buffer.
- the destination buffer could contain the displayed screen data, but it could also contain an intermediate bitmap.
- the destination buffer is managed by the client-side-script-program, running in the Web browser.
- WebGL i.e. Web Graphics Library, which is intended for 3D applications, was derived from OpenGL (Open Graphics Library); which is a language with a set of APIs (application programming interface) or data stream that sends commands directly to the graphics card.
- OpenGL Open Graphics Library
- the graphics card (GPU) then executes the WebGL or OpenGL commands hardware-accelerated. It is worth to mention in this context that Canvas 2D and WebGL cannot be mixed when drawing on the same screen/browser window.
- HTML Canvas Reference can be found at: http://www.w3schools.com/tags/ref canvas.asp.
- a further basic extension of the concept of the invention refers to the implementation of the server client connection which does not need to be a direct WebSocket connection.
- the client-server-communication system may comprise a gateway program running on the server computer or on a separate computer.
- the data and drawing commands, and preferably at least basic GUI data are then sent to an intermediate gateway—preferred embodiment of claim 8 —which in turn realizes the translation to the WebSocket protocol in order to forward the data and commands to the HTML5 Web browser.
- the server computer itself can then use different networking connections, like TCP or UDP, which are usual connection protocols at the time of the invention.
- Client-Side-Script-Program running in the Web browser
- the screen content is generated by using the GDI-commands which may also manipulate bitmaps.
- client-side-script-program running in the Web browser, also renders the drawing instructions.
- Graphics data and drawing commands sent by a Remote Desktop Server are often encrypted and compressed. Such a data stream cannot be optimized regarding a minimum of needed network bandwidth and processing power. Therefore, this data stream is decrypted and decompressed by the gateway according to another preferred embodiment of the invention as of claim 9 .
- the data stream between server and client is filtered and split into several “channels”, like GDI commands, bitmaps, and other data streams, marked as “I/O Channels”, which may contain audio data, printer data, etc.
- the data of these different channels can now be optimized according to the related characteristics.
- compression there exist different algorithms, where it is now possible to apply that one to a certain channel, which is best suited for that kind of data in order to get the best result.
- the preferred embodiment of claim 11 provides for the gateway program performing a Special Remote Desktop Protocol.
- This Special Remote Desktop Protocol as it is further defined in claim in 12 serves to provide transport channels to send the described single data stream channels to the Web browser. At least it supports data transport for vector graphics and bitmaps. Optionally, it may additionally support other data channels, like I/O data.
- the Special Remote Desktop Protocol layer receives the data streams and separates the different data channels, as these are basic GUI data, like GDI commands, bitmaps, and the other I/O channel data. If the received data are compressed, they may be decompressed. Graphics data are rendered out of the GDI commands, raster operations may be performed.
- the format, in which the graphics data are passed to the Canvas elements, depends on the properties supported by the Web browser APIs.
- Another preferred functionality according to claim 13 of that Special Remote Desktop Protocol is providing a flow control related to that protocol layer. This flow control ensures that the Web browser does not suffer of too much data receive in a short time.
- FIG. 1 is a schematic overview of a client-server-communication system.
- the basic components of the client-server-communication system shown in FIG. 1 are a public network 1 like the Internet, which connects a server computer 2 and a client computer 3 .
- the server 2 which is adapted to be a Remote Desktop Server, runs a gateway program 4 , the functionality of which is to be explained in the following.
- the gateway program 4 can also be implemented on a separate computer.
- the client computer 3 runs a browser program 5 which is HTML5 capable.
- the browser program 5 is called Web browser in the following.
- This Web browser 5 provides for the system graphics API 6 which controls the graphics processing unit 7 associated to the display unit 8 of the client computer 3 .
- a client-side-script-program 9 is run which has a broad variety of functionality also explained in the following later on.
- Further protocol layers within the structure of the Web browser 5 of the client computer 3 are the layers of the WebSocket 10 c (“c” for “client”) and the HTTP/HTTPS protocol 11 c.
- the gateway program 4 running on the server computer 2 has the following basic functionalities which are partly “mirror images” of the according functionalities of the Web browser 5 of the client computer 3 . So the gateway program 4 is also based on the special remote desktop protocol 12 s (“s” for “server”) with the underlying protocol layers of the WebSocket 10 s and HTTP/HTTPS protocol 11 s.
- gateway program 4 provides for a decryption/decompression function 18 .
- this data stream is filtered and split into several channels by a splitter/filter function 19 .
- These channels are a GDI commands channel 13 s , a bitmap channel 14 s and an I/O channel 15 s which are again “mirror images” of channels 13 c , 14 c and 15 c of the client computer 3 .
- the data of these different channels can be optimized according to the related characteristics.
- the Special Remote Desktop Protocol 12 s provides transport channels to send the mentioned single data stream channels to the Web browser 5 .
- transport channels for this purpose at least data transport for vector graphics and bitmaps is supported.
- it may additionally support other data channels, namely the mentioned input output channels.
- Special Remote Desktop Protocol 12 s Another functionality of the Special Remote Desktop Protocol 12 s is providing a flow control related to the protocol layer which ensures that the Web browser 5 does not suffer of too much data receive in a short time.
- a further functionality is providing a transport of the already mentioned compressed data streams, which can be done separately and optimized for every single data channel.
- the special remote desktop protocol 12 c layer receives the data streams and separates the different data channels 12 c , 14 c and 15 c according to their properties, namely GDI commands, bitmaps and the other I/O channel data. If the received data are compressed they are decompressed.
- Graphics data are rendered out of the GDI commands, raster operations may be performed.
- the format, in which the great kickstart is passed to the Canvas elements function 17 depends on the properties supported by the Web browser 5 APIs.
- MSDN Microsoft Developer Network
- X11 used for Unix systems like Linux
- the API for drawing a single line has the name XDrawLine( ).
- the definitions can be found by the command “man XDrawLine”, or in the header file Xlib.h as:
- PolySegment 1 66 opcode 1 unused 2 3+2n request length 4 DRAWABLE drawable 4 GCONTEXT gc 8n LISTofSEGMENT segments SEGMENT 2 INT16 x1 2 INT16 y1 2 INT16 x2 2 INT16 y2
- lineTo( ) adds a new point and creates a line from that point to the last specified point in the Canvas.
- Bitmaps which are a collection of pixel data, may be sent from the Web server to the browser over the WebSocket 10 s , 10 c in compressed form.
- the compressed bitmaps are then expanded by the client-side-script-program 9 .
- This decompression may be done in software only, or with the help of hardware like the GPU 7 .
- the content of a display unit 8 e.g. a screen content, is generated by using the GDI-commands which may also manipulate bitmaps.
- the client-side-script-program 9 running in the Web browser 5 also renders the drawing instructions.
- GDI-commands or Primitives may contain ROP-codes.
- ROP means “raster operations”.
- Such a ROP-code for example, may be the operation XOR (bitwise exclusive OR).
- This XOR means, the resulting bits generated from the GDI-commands or Primitives are XOR calculated with the old content of the destination buffer.
- the destination buffer could contain the displayed screen data, but it could also contain an intermediate bitmap.
- the destination buffer is managed by the client-side-script-program 9 , running in the Web browser 5 .
- the HTML5 Canvas 2D API at the time of the invention does not support any ROP commands. So the client-side-script-program 9 applies the ROP-codes to the destination buffers, containing the pixel data to be displayed. Applying the ROP-codes in the Web browser 5 , used as GUI client, can also be done with the help of the GPU 7 . Usually OpenGL/WebGL is used for these operations.
- a certain remote desktop protocol is used, including certain operations.
- the APIs available for the client-side-script-program 9 provided through HTML5, the Canvas 2D or Canvas WebGL, may have implemented another set of operations.
- the client-side-script-program 9 running in the Web browser 5 does the mapping between the server computer 2 side display data and the client computer 3 side display data through emulation. This emulation can also use hardware acceleration, provided through the GPU 7 , for example using the WebGL API.
- Another way to solve the differences between possible implementations of 2D on the server computer 2 side and the client computer 3 side can be to disable sending certain commands by the server or manipulations on the server side.
- the client-side-script-program 9 may receive OpenGL or DirectX commands directly. Then with these
- OpenGL or DirectX commands the WebGL APIs are called. Calling the WebGL API from OpenGL or DirectX commands may require a certain wrapper.
- OpenGL or DirectX commands could also be emulated in software, which means by the client-side-script-program 9 .
- an HTML5 capable Web browser can connect to a server application and efficiently display the GUI data created by that server application.
- the graphics data can be sent very effectively with low bandwidth needs and low latency over a public network, when using Primitives and OpenGL commands and compressed or uncompressed bitmaps.
- a downloaded script program like JavaScript, can run in this Web browser to interpret those Primitives and OpenGL commands. It can render the GUI image, sent by the server or an intermediate gateway, and locally create Canvas elements to draw the graphics efficiently onto the Web browsers display area.
- the implementation specific functionality may be maintained by an intermediate gateway.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A client-server-communication system comprises
-
- a public network (1), especially the Internet,
- a server computer (2)
- running at least one server application which provides a graphical user interface,
- wherein the server application creates basic GUI data to be processed by a graphics processing unit (7) for controlling said graphical user interface, which basic GUI data at least include a set of geometric basic primitives, and
- a client computer (3)
- including a graphics processing unit (7),
- connectable to the server computer (2) via the public network (1), and
- running a browser program (5) which is HTML5 capable,
- in which browser program (5) a client-side-script-program (9) including a WebSocket protocol (10) is running, which receives and interprets the basic GUI data and from these basic GUI data renders drawing instructions as graphics content for being processed by the graphics processing unit (7) of the client computer (3).
Description
- 1. Field of the Invention
- The invention refers to client-server-communication system comprising a public network, especially the Internet, a server computer and a client computer. Typically such a system is realized by a remote desktop server scenario.
- 2. Background Art
- For a proper understanding of the present invention it is necessary to discuss such a remote desktop server scenario in the light of the transmission of any graphical information between the server computer and the client computer.
- In fact an application, running on a computer, which provides a graphical user interface (GUI), uses a vector graphics application programming interface, for example frameworks like Windows GDI (Graphics Device Interface), Xlib (X11) or Quartz 2D (Mac OS X). Additionally the application can use 3D programming interfaces, like OpenGL or DirectX. Such interfaces will simply be called GDI subsequently in this document. Further on the data generated and handled under these GDI interfaces are named “basic GUI data” in the following. Basic GUI data can also represent commands to manipulate bitmaps which have been created before, or read from a device such as the disk drive.
- The mentioned frameworks are based on a set of so called geometric graphics Primitives, for example commands to draw a line, to fill a rectangle, or to draw an ellipse. They are usually processed by the graphics card incorporated into a computer, also called GPU (Graphics Processing Unit).
- These GPUs normally can execute these Primitives faster than the CPU of the computer could do.
- Whenever a Primitive cannot be handled by the GPU directly, it is emulated by an intermediate software.
- Mostly, the software which generates the GDI-commands and the graphics card are in the same computer and are directly coupled.
- In remote desktop scenarios, however, the graphics Primitives are redirected and sent over a network via an appropriate protocol, like RDP (Microsoft), X11 (X-Windows), ICA (Citrix) or PCoIP (Teradici). This means, the software generating the GDI-commands runs on one computer, namely the server computer. The graphic card together with some driver is running in another computer, namely the client computer, which shows the resulting graphics/pixels. The client and the server are connected by a network, which may be the public internet.
- Protocols which send GDI-commands, Primitives, OpenGL commands or DirectX commands over a network are X11-X-Windows, ICA from Citrix, RDP from Microsoft or PCoIP/PC-over-IP from Teradici.
- Now a typical scenario, where there is a server application providing the information, which needs to be displayed remotely, is browsing the Web. Web server computers are providing information, which is sent over a network, e.g. the public internet, to a Web browser running on a client computer, which browser displays the information.
- Web browsers, from the beginning, used the half-duplex protocol HTTP (Hypertext Transfer Protocol), as defined in RFC 2616. But this usage of a half-duplex protocol does not provide the functionality needed by some Web applications.
- As today, with HTLM5, Web browsers either understand HTTP or the WebSocket protocol which are both based on TCP, but not other protocols that use TCP or UDP as transport layer, like the before mentioned remote desktop protocols x11, ICA, RDP or PCoIP.
- Normally the browser shows the content of a Web page or result of a JavaScript program to the user and the user can input some data, with the keyboard or the mouse. In this moment, the server (Web server) cannot update the Web page or send new data to the JavaScript program running in the browser, because of the half-duplex restriction of the HTTP.
- To overcome this hurdle, some JavaScript programs, running in the browser, send a new query, independent of any user input, just to ask the Web server if it wants to update the content the user is watching. This is called polling. The result of this polling is a lot of communication overhead and latency as the user can see the new Web page only after the time-gap between two polling requests. This leads to a bad user experience.
- The WebSocket protocol, introduced with HTML5, is defined in RFC 6455. This new protocol is full-duplex and so the client like a Web browser or the server, which may be a Web server or a gateway, can send data whenever it wants, not restricted to specific states.
- For the WebSocket protocol, also compression is supported in the components that implement the WebSocket protocol at the client side, in particular related to the Web browsers, and at the server applications, like the Web server or a gateway.
- This compression is dictionary based (Deflate, GZIP). Compression of the primitives, bitmaps or other GUI commands/elements may be done by the server application, depending on the specific remote desktop protocol, prior to this Websocket based compression. This may greatly improve the efficiency of the transport of the commands from the server to the client, needed to display the GUI screen.
- Web browsers in general are able to download script programs—Client-Side-Script-Program—from the Web server and run these programs directly inside the Web browser, like JavaScript or VBScript (Visual Basic Script). The latter runs in the Microsoft Web browser “Internet Explorer”.
- Maybe in the future new programming languages will be developed where the resulting program can also run directly in the Web browser on the client computer.
- Now keeping aforesaid background information in mind a basic problem within client-server-communication systems, when talking about controlling graphical user interfaces which are to be handled by a server computer and appear within the browser program running on a client computer, is the restricted efficiency of transporting parts of the screen or the entire screen to be displayed in the browser program on the client computer in pixels or bitmaps which are directly drawn. This needs a high bandwidth and leads to a restricted user experience.
- The invention according to the features of
claim 1 provides for a client-server-communication system that uses a basic concept to an improved handling of basic GUI data between a server and client computer, which system comprises -
- a public network, especially the Internet,
- a server computer
- running at least one server application which provides a graphical user interface,
- wherein the server application creates basic GUI data to be processed by a graphics processing unit for controlling said graphical user interface, which basic GUI data at least include a set of geometric basic primitives, and
- a client computer
- including a graphics processing unit,
- connectable to the server computer via the public network, and
- running a browser program which is HTML5 capable, in which browser program a client-side-script-program including a WebSocket protocol is running, which receives and interprets the basic GUI data and from these basic GUI data renders drawing instructions as graphics content for being processed by the graphics processing unit of the client computer.
- For most interesting server applications, when the screen content needs to be shown by another computer, which is connected over a network, transporting basic GUI-commands is much more efficient compared to transporting parts of the screen or the entire screen as pixels or bitmaps, which are directly drawn.
- The present invention is using above cited script program technologies, like JavaScript or VBScript, but it does not depend on the programming language supported by the Web browser. The functionality of the invention's program can be implemented in any programming language supported by Web browsers, whether already existing or possibly existing in the future.
- As an advantage of this invention, the application running on the server computer generates basic GUI-commands. These are sent by a WebSocket connection to the Web browser, and the inventions Client-Side-Script-Program, for example a JavaScript program, running in the browser, uses the application programming interfaces e.g. for Canvas 2D or WebGL to draw into the browsers display area—preferred embodiment of
claim 2. - Such a server could be a Microsoft Windows Terminal Server using RDP, or a Unix system using the Xlib for drawing into remote clients display area directly.
- According to another preferred embodiment defined in
claim 3 the basic GUI data are at least one of Primitives, OpenGL/GDI and DirectX commands which if necessary are emulated by the client-side-script-program. - Preferably the I/O terminal data are handled by the client-side-script-program, especially this program handles the data transfer including the basic GUI data or I/O channel data over the WebSocket protocol in a compressed form, and in particular over a Special Remote Desktop Protocol—preferred embodiments of
4 and 5.claims - According to another preferred embodiment of the invention defined in
claim 6 the client-side-script-program further on provides for one or more of following functionalities: -
- handling bitmaps data, especially compressed bitmaps data,
- applying raster operations onto the basic GUI data, and
- obtaining drawing contexts and creating Canvas or WebGL elements and updating same.
- In this context bitmaps, which are a collection of pixel data, may be sent from the Web server to the browser over WebSocket in compressed form.
- The compressed bitmaps are then expanded by the invention's client-side-script-program. This decompression may be done in software only or with the help of hardware like a GPU (Graphics Processing Unit).
- Concerning the raster operations mentioned above it is to be explained that the GUI data, like GDI-commands or Primitives may contain raster operations (ROP) codes. Such a ROP-code, for example, may be the operation XOR (bitwise exclusive OR). This XOR means, the resulting bits generated from the GDI-commands or Primitives are XOR calculated with the old content of the destination buffer. The destination buffer could contain the displayed screen data, but it could also contain an intermediate bitmap. The destination buffer is managed by the client-side-script-program, running in the Web browser.
- Concerning the mentioned drawing contexts under the new standards for Web browsers explained above, namely HTML5 and WebSocket, it is possible within said script program running in the browser that graphical information is drawn directly into the display area and the browser, namely by using above mentioned Canvas 2D or WebGL elements.
- WebGL, i.e. Web Graphics Library, which is intended for 3D applications, was derived from OpenGL (Open Graphics Library); which is a language with a set of APIs (application programming interface) or data stream that sends commands directly to the graphics card. The graphics card (GPU) then executes the WebGL or OpenGL commands hardware-accelerated. It is worth to mention in this context that Canvas 2D and WebGL cannot be mixed when drawing on the same screen/browser window.
- For further background information the HTML Canvas Reference can be found at: http://www.w3schools.com/tags/ref canvas.asp.
- A further basic extension of the concept of the invention refers to the implementation of the server client connection which does not need to be a direct WebSocket connection. Rather, as is basically included in
claim 7, the client-server-communication system may comprise a gateway program running on the server computer or on a separate computer. The data and drawing commands, and preferably at least basic GUI data, are then sent to an intermediate gateway—preferred embodiment ofclaim 8—which in turn realizes the translation to the WebSocket protocol in order to forward the data and commands to the HTML5 Web browser. The server computer itself can then use different networking connections, like TCP or UDP, which are usual connection protocols at the time of the invention. - In the inventions Client-Side-Script-Program, running in the Web browser, the screen content is generated by using the GDI-commands which may also manipulate bitmaps. Further on the invention's client-side-script-program, running in the Web browser, also renders the drawing instructions.
- Graphics data and drawing commands sent by a Remote Desktop Server are often encrypted and compressed. Such a data stream cannot be optimized regarding a minimum of needed network bandwidth and processing power. Therefore, this data stream is decrypted and decompressed by the gateway according to another preferred embodiment of the invention as of
claim 9. - Preferably according to claim 10 by the gateway program the data stream between server and client is filtered and split into several “channels”, like GDI commands, bitmaps, and other data streams, marked as “I/O Channels”, which may contain audio data, printer data, etc. The data of these different channels can now be optimized according to the related characteristics. Regarding compression, there exist different algorithms, where it is now possible to apply that one to a certain channel, which is best suited for that kind of data in order to get the best result.
- The preferred embodiment of claim 11 provides for the gateway program performing a Special Remote Desktop Protocol. This Special Remote Desktop Protocol as it is further defined in claim in 12 serves to provide transport channels to send the described single data stream channels to the Web browser. At least it supports data transport for vector graphics and bitmaps. Optionally, it may additionally support other data channels, like I/O data.
- On the client side there exist the related protocol layers HTTP/HTTPS (with encryption) and WebSocket (with compression), which are provided by the Web browser. In the client-side-script-program, running inside the HTML5 capable Web browser, the Special Remote Desktop Protocol layer receives the data streams and separates the different data channels, as these are basic GUI data, like GDI commands, bitmaps, and the other I/O channel data. If the received data are compressed, they may be decompressed. Graphics data are rendered out of the GDI commands, raster operations may be performed. The format, in which the graphics data are passed to the Canvas elements, depends on the properties supported by the Web browser APIs.
- Another preferred functionality according to claim 13 of that Special Remote Desktop Protocol is providing a flow control related to that protocol layer. This flow control ensures that the Web browser does not suffer of too much data receive in a short time.
- The invention will be described in more detail in the following explanation of a preferred embodiment referring to the accompanying drawing, in which
-
FIG. 1 is a schematic overview of a client-server-communication system. - The basic components of the client-server-communication system shown in
FIG. 1 are apublic network 1 like the Internet, which connects aserver computer 2 and aclient computer 3. Theserver 2, which is adapted to be a Remote Desktop Server, runs agateway program 4, the functionality of which is to be explained in the following. Thegateway program 4 can also be implemented on a separate computer. - The
client computer 3 runs abrowser program 5 which is HTML5 capable. Thebrowser program 5 is called Web browser in the following. ThisWeb browser 5 provides for thesystem graphics API 6 which controls thegraphics processing unit 7 associated to thedisplay unit 8 of theclient computer 3. - Within the Web browser 5 a client-side-script-
program 9 is run which has a broad variety of functionality also explained in the following later on. Further protocol layers within the structure of theWeb browser 5 of theclient computer 3 are the layers of theWebSocket 10 c (“c” for “client”) and the HTTP/HTTPS protocol 11 c. - The client-side-script-
program 9 uses the SpecialRemote Desktop Protocol 12 c, which separates the different data type channels within the client-side-script-program, namely theGDI command channel 13 c, thebitmaps channel 14 c and the I/O channel 15 c. For the processing of GDI commands and bitmaps provided over the 13 c and 14 c the Canvas context updates function 16 is implemented in the client-side-script-channels program 9. Further on according data for controlling input and output channels like a mouse, keyboard, printer or the like, on theclient computer 3 provided via the I/O channel 15 c are handled by aCanvas element function 17. - The
gateway program 4 running on theserver computer 2 has the following basic functionalities which are partly “mirror images” of the according functionalities of theWeb browser 5 of theclient computer 3. So thegateway program 4 is also based on the specialremote desktop protocol 12 s (“s” for “server”) with the underlying protocol layers of theWebSocket 10 s and HTTP/HTTPS protocol 11 s. - As graphics data and drawing commands sent by the
server computer 2, which is as a rule a remote desktop server, are often encrypted and compressed, such a data stream cannot be optimized regarding a minimum of needed network bandwidth and processing power. Therefore in thegateway program 4 provides for a decryption/decompression function 18. - In a further processing step as concerns the data provided by the Remote
Desktop server computer 2 this data stream is filtered and split into several channels by a splitter/filter function 19. These channels are a GDI commandschannel 13 s, abitmap channel 14 s and an I/O channel 15 s which are again “mirror images” of 13 c, 14 c and 15 c of thechannels client computer 3. The data of these different channels can be optimized according to the related characteristics. - The Special
Remote Desktop Protocol 12 s provides transport channels to send the mentioned single data stream channels to theWeb browser 5. For this purpose at least data transport for vector graphics and bitmaps is supported. Optionally in it may additionally support other data channels, namely the mentioned input output channels. - Another functionality of the Special
Remote Desktop Protocol 12 s is providing a flow control related to the protocol layer which ensures that theWeb browser 5 does not suffer of too much data receive in a short time. A further functionality is providing a transport of the already mentioned compressed data streams, which can be done separately and optimized for every single data channel. - On the side of the
client computer 3 the specialremote desktop protocol 12 c layer receives the data streams and separates the 12 c, 14 c and 15 c according to their properties, namely GDI commands, bitmaps and the other I/O channel data. If the received data are compressed they are decompressed.different data channels - Graphics data are rendered out of the GDI commands, raster operations may be performed. The format, in which the great kickstart is passed to the Canvas elements function 17 depends on the properties supported by the
Web browser 5 APIs. - A simple example is the use of the API lineTo( ) to draw a line. In MSDN (Microsoft Developer Network) there is defined:
-
BOOL LineTo( _In_ HDC hdc, _In_ int nXEnd, _In_ int nYEnd);
as a GDI programming interface for Windows programs. - For X11 used for Unix systems like Linux, the API for drawing a single line has the name XDrawLine( ). The definitions can be found by the command “man XDrawLine”, or in the header file Xlib.h as:
-
int XDrawLine(Display *display, Drawable d, GC gc, int x1, int y1, int x2, int y2); - For the Microsoft RDP protocol, lineTo is described in the document [MS-RDPEGDI]:
-
- 2.2.2.2.1.1.2.11 LineTo (LINETO ORDER)
with the exact sequence of bytes which are sent over the RDP/TCP connection.
- 2.2.2.2.1.1.2.11 LineTo (LINETO ORDER)
- When in a Unix system the Xlib API XDrawLine( ) is called, this generates a command PolySegment (to be sent over the network) which is explained in the document
-
- http://www.x.org/archive/X11R7.5/doc/x11proto/proto.pdf
as:
- http://www.x.org/archive/X11R7.5/doc/x11proto/proto.pdf
-
PolySegment 1 66 opcode 1 unused 2 3+ 2n request length 4 DRAWABLE drawable 4 GCONTEXT gc 8n LISTofSEGMENT segments SEGMENT 2 INT16 x1 2 INT16 y1 2 INT16 x2 2 INT16 y2 - As an example,
- XDrawLine(adsl_display, dsl_window, dsl_gcontext, 10, 390, 390,10) ;
sends the following byte/octet stream over the network: - where:
-
0x42 - Opcode 66 - Polysegment 0x00 - unused 0x0005 - request lenght (each 4 bytes) 0x04a00001 - drawable reference/id 0x04a00002 - graphic context reference/id 0x000a - x1 coordinate 0x0186 - y1 coordinate 0x0186 - x2 coordinate 0x000a - y2 coordinate - This example is little endian, big endian would look slightly different.
- In HTML5/Canvas, lineTo( ) adds a new point and creates a line from that point to the last specified point in the Canvas.
- Parameter Values are
-
- X: The x-coordinate of where to create the line to.
- Y: The y-coordinate of where to create the line to.
- In OpenGL/WebGL a line To GDI-command can be executed in the GPU with the following program code:
-
glBegin(GL_LINES); glVertex2i( x1, y1 ); glVertex2i( x2, y2 ); glEnd( ); - Bitmaps, which are a collection of pixel data, may be sent from the Web server to the browser over the
10 s, 10 c in compressed form.WebSocket - The compressed bitmaps are then expanded by the client-side-script-
program 9. This decompression may be done in software only, or with the help of hardware like theGPU 7. - In the client-side-script-
program 9 running in theWeb browser 5, the content of adisplay unit 8, e.g. a screen content, is generated by using the GDI-commands which may also manipulate bitmaps. - The client-side-script-
program 9 running in theWeb browser 5 also renders the drawing instructions. - GDI-commands or Primitives may contain ROP-codes. ROP means “raster operations”. Such a ROP-code, for example, may be the operation XOR (bitwise exclusive OR). This XOR means, the resulting bits generated from the GDI-commands or Primitives are XOR calculated with the old content of the destination buffer. The destination buffer could contain the displayed screen data, but it could also contain an intermediate bitmap. The destination buffer is managed by the client-side-script-
program 9, running in theWeb browser 5. - The HTML5 Canvas 2D API at the time of the invention does not support any ROP commands. So the client-side-script-
program 9 applies the ROP-codes to the destination buffers, containing the pixel data to be displayed. Applying the ROP-codes in theWeb browser 5, used as GUI client, can also be done with the help of theGPU 7. Mostly OpenGL/WebGL is used for these operations. - On the
server computer 2 side, a certain remote desktop protocol is used, including certain operations. On theclient computer 3 side, in theWeb browser 5, the APIs available for the client-side-script-program 9, provided through HTML5, the Canvas 2D or Canvas WebGL, may have implemented another set of operations. If necessary, the client-side-script-program 9 running in theWeb browser 5 does the mapping between theserver computer 2 side display data and theclient computer 3 side display data through emulation. This emulation can also use hardware acceleration, provided through theGPU 7, for example using the WebGL API. - Another way to solve the differences between possible implementations of 2D on the
server computer 2 side and theclient computer 3 side can be to disable sending certain commands by the server or manipulations on the server side. - Over the
10 s, 10 c connection, the client-side-script-WebSocket program 9 may receive OpenGL or DirectX commands directly. Then with these - OpenGL or DirectX commands the WebGL APIs are called. Calling the WebGL API from OpenGL or DirectX commands may require a certain wrapper.
- When Canvas is used in the Web browser, OpenGL or DirectX commands could also be emulated in software, which means by the client-side-script-
program 9. - Some aspects of the invention may be summarized as follows:
- In a remote desktop scenario, an HTML5 capable Web browser can connect to a server application and efficiently display the GUI data created by that server application. The graphics data can be sent very effectively with low bandwidth needs and low latency over a public network, when using Primitives and OpenGL commands and compressed or uncompressed bitmaps. Through communicating over a HTTP or Websocket connection of that modern HTML5 capable Web browser, a downloaded script program, like JavaScript, can run in this Web browser to interpret those Primitives and OpenGL commands. It can render the GUI image, sent by the server or an intermediate gateway, and locally create Canvas elements to draw the graphics efficiently onto the Web browsers display area. The implementation specific functionality may be maintained by an intermediate gateway.
Claims (14)
1. A client-server-communication system comprising
a public network (1), especially the Internet,
a server computer (2)
running at least one server application which provides a graphical user interface,
wherein the server application creates basic GUI data to be processed by a graphics processing unit (7) for controlling said graphical user interface, which basic GUI data at least include a set of geometric basic primitives, and
a client computer (3)
including a graphics processing unit (7),
connectable to the server computer (2) via the public network (1), and
running a browser program (5) which is HTML5 capable,
in which browser program (5) a client-side-script-program (9) including a WebSocket protocol (10) is running, which receives and interprets the basic GUI data and from these basic GUI data renders drawing instructions as graphics content for being processed by the graphics processing unit (7) of the client computer (3).
2. A client-server-communication system according to claim 1 , wherein the graphics content is passed to the browser program (5) with displaying server application data in a display area of the browser program (5).
3. A client-server-communication system according to claim 1 , wherein the basic GUI data are at least one of Primitives, OpenGL/GDI and DirectX commands which if necessary are emulated by the client-side-script-program (9).
4. A client-server-communication system according to claim 1 , wherein I/O channel (15) data are handled by the client-side-script-program (9).
5. A client-server-communication system according to claim 1 , wherein the client-side-script-program (9) handles the data transfer including the basic GUI data (13) or I/O channel (15) data over the WebSocket protocol (10) in a compressed form, and in particular over a Special Remote Desktop Protocol (12).
6. A client-server-communication system according to claim 1 , wherein the client-side-script-program (9) further on provides for one or more of following functionalities:
handling bitmaps data (14), especially compressed bitmaps data (14),
applying raster operations onto the basic GUI data (13),
obtaining drawing contexts and creating Canvas or WebGL elements (17) and updating same.
7. A client-server-communication system according to claim 1 , comprising a gateway program (4) running on the server computer (2) or on a separate computer.
8. A client-server-communication system according to claim 7 , wherein the gateway program (4) receives at least basic GUI data from the server computer (2).
9. A client-server-communication system according to claim 7 , wherein the gateway program (4) provides for a decryption and decompression functionality (18) of data received from the server computer (2).
10. A client-server-communication system according to claim 7 , wherein the gateway program (4) provides a splitter and filter operation functionality (19) selecting between different types of data stream channels, like basic GUI data (13), bitmaps (14) or I/O data (15) channels.
11. A client-server-communication system according to claim 7 , wherein the gateway program (4) performs a Special Remote Desktop Protocol (12 s).
12. A client-server-communication system according to claim 14 wherein the Special Remote Desktop Protocol (12 s) is designed to transport the data streams of separated channels (13 s, 14 s, 15 s) of GUI data, bitmaps or I/O data to the client computer (3) over a WebSocket protocol (10 s, 10 c) and a HTTP/HTTPS protocol (11 s, 11 c) over the public network (1).
13. A client-server-communication system according to claim 11 , wherein the Special Remote Desktop Protocol (12 s, 12 c) is providing a flow control related to that protocol layer.
14. A client-server-communication system according to claim 10 , wherein the gateway program (4) further performs a Special Remote Desktop Protocol (12 s).
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP14175590.0 | 2014-07-03 | ||
| EP14175590.0A EP2963885A1 (en) | 2014-07-03 | 2014-07-03 | A client-server-communication system running a client-side-script-program |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20160006788A1 true US20160006788A1 (en) | 2016-01-07 |
Family
ID=51133900
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/788,976 Abandoned US20160006788A1 (en) | 2014-07-03 | 2015-07-01 | Client-server-communication system running a client-side-script-program |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US20160006788A1 (en) |
| EP (1) | EP2963885A1 (en) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20180029253A1 (en) * | 2016-07-27 | 2018-02-01 | General Electric Company | Method and apparatus for processing part |
| CN110515689A (en) * | 2019-08-28 | 2019-11-29 | 成都安恒信息技术有限公司 | Graphic user interface for fort machine RDP CS O&M realizes system and method |
| US11039986B2 (en) | 2016-02-25 | 2021-06-22 | Samsung Electronics Co., Ltd. | Chronotherapeutic dosing of medication and medication regimen adherence |
| CN113689322A (en) * | 2021-08-27 | 2021-11-23 | 支付宝(杭州)信息技术有限公司 | Artificial intelligence model service processing method, device and equipment under drawing protocol |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110324671B (en) * | 2018-03-30 | 2021-06-08 | 中兴通讯股份有限公司 | Webpage video playing method and device, electronic equipment and storage medium |
| CN110430222A (en) * | 2019-09-12 | 2019-11-08 | 北京许继电气有限公司 | A kind of service interface implementation method based on protocol mode |
| CN112468502B (en) * | 2020-11-27 | 2022-07-01 | 杭州梦视网络科技有限公司 | Websocket protocol-based embedded equipment remote experiment method |
| CN114546382A (en) * | 2022-02-14 | 2022-05-27 | 同恩(上海)工程技术有限公司 | A cloud-native engineering graphics interactive system |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6173044B1 (en) * | 1996-02-06 | 2001-01-09 | International Business Machines Corporation | Multipoint simultaneous voice and data services using a media splitter gateway architecture |
| US20090265552A1 (en) * | 2008-03-28 | 2009-10-22 | Celltrust Corporation | Systems and methods for secure short messaging service and multimedia messaging service |
| US20110185068A1 (en) * | 2010-01-22 | 2011-07-28 | Microsoft Corporation | Multi-link remote protocol |
| US20120011445A1 (en) * | 2010-07-08 | 2012-01-12 | Arnon Gilboa | Remote Computing With A Low Latency Mouse Mode |
| US20120079419A1 (en) * | 2010-09-27 | 2012-03-29 | Kabushiki Kaisha Toshiba | Gui processing apparatus, gui processing method and gui processing program |
| US20120117145A1 (en) * | 2010-11-08 | 2012-05-10 | Sony Corporation | Methods and systems for use in providing a remote user interface |
| US20140092087A1 (en) * | 2012-09-28 | 2014-04-03 | Takayuki Kazama | Adaptive load balancing in software emulation of gpu hardware |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060265662A1 (en) * | 2005-05-19 | 2006-11-23 | Custom Credit Systems, L.P. | System and method for generating and updating user interfaces of web-based applications |
-
2014
- 2014-07-03 EP EP14175590.0A patent/EP2963885A1/en not_active Withdrawn
-
2015
- 2015-07-01 US US14/788,976 patent/US20160006788A1/en not_active Abandoned
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6173044B1 (en) * | 1996-02-06 | 2001-01-09 | International Business Machines Corporation | Multipoint simultaneous voice and data services using a media splitter gateway architecture |
| US20090265552A1 (en) * | 2008-03-28 | 2009-10-22 | Celltrust Corporation | Systems and methods for secure short messaging service and multimedia messaging service |
| US20110185068A1 (en) * | 2010-01-22 | 2011-07-28 | Microsoft Corporation | Multi-link remote protocol |
| US20120011445A1 (en) * | 2010-07-08 | 2012-01-12 | Arnon Gilboa | Remote Computing With A Low Latency Mouse Mode |
| US20120079419A1 (en) * | 2010-09-27 | 2012-03-29 | Kabushiki Kaisha Toshiba | Gui processing apparatus, gui processing method and gui processing program |
| US20120117145A1 (en) * | 2010-11-08 | 2012-05-10 | Sony Corporation | Methods and systems for use in providing a remote user interface |
| US20140092087A1 (en) * | 2012-09-28 | 2014-04-03 | Takayuki Kazama | Adaptive load balancing in software emulation of gpu hardware |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11039986B2 (en) | 2016-02-25 | 2021-06-22 | Samsung Electronics Co., Ltd. | Chronotherapeutic dosing of medication and medication regimen adherence |
| US20180029253A1 (en) * | 2016-07-27 | 2018-02-01 | General Electric Company | Method and apparatus for processing part |
| CN110515689A (en) * | 2019-08-28 | 2019-11-29 | 成都安恒信息技术有限公司 | Graphic user interface for fort machine RDP CS O&M realizes system and method |
| CN113689322A (en) * | 2021-08-27 | 2021-11-23 | 支付宝(杭州)信息技术有限公司 | Artificial intelligence model service processing method, device and equipment under drawing protocol |
Also Published As
| Publication number | Publication date |
|---|---|
| EP2963885A1 (en) | 2016-01-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20160006788A1 (en) | Client-server-communication system running a client-side-script-program | |
| US11675930B2 (en) | Remoting application across a network using draw commands with an isolator application | |
| US12177280B2 (en) | Ultra-low latency remote application access | |
| US10552639B1 (en) | Local isolator application with cohesive application-isolation interface | |
| CN103460670B (en) | Method and system for conducting a remote desktop session using an HTTP handler and a remote desktop client common interface | |
| EP2171606B1 (en) | Bitmap-based display remoting | |
| CN103430123B (en) | For carrying out the method and system of remote desktop session via HTML | |
| JP5060489B2 (en) | Multi-user terminal service promotion device | |
| US11277500B2 (en) | Integration of a standard network protocol layer in a web browser by compilation to webassembly and use of a websocket | |
| KR101159396B1 (en) | Efficient encoding of alternative graphic sets | |
| US7076735B2 (en) | System and method for network transmission of graphical data through a distributed application | |
| US10237327B2 (en) | Methods and systems for accessing and controlling a remote desktop of a remote machine in real time by a web browser at a client device via HTTP API utilizing a transcoding server | |
| CN105190587B (en) | Contribute to the method and system of remote desktop session using long-term poll | |
| EP3046331A1 (en) | Media control method and device based on desktop cloud | |
| CN103412701B (en) | remote desktop image processing method and device | |
| KR20070110127A (en) | Method and apparatus for updating a graphic display in a distributed processing environment using compression | |
| WO2021036940A1 (en) | Method for multiple displays to access cloud desktop, system, cloud desktop client and cloud desktop server | |
| US9875076B1 (en) | Remoting client having GPU off-loader | |
| US9165538B2 (en) | Image generation | |
| KR101031963B1 (en) | Protocol for Remote Visual Configuration | |
| US10237566B2 (en) | Video decoding using point sprites | |
| CN107402771B (en) | Remote UI Collaboration Applications | |
| CN110377349B (en) | Access display method, device, terminal, server and storage medium | |
| US8984167B1 (en) | Real-time frame streaming from remote graphics processing unit | |
| CN105446466A (en) | Virtual desktop client, control chip of virtual desktop client and control method of server device |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: HOB GMBH & CO. KG, GERMANY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MARTIN, STEFAN;RETTNER, ALEXANDER;BRANDSTAETTER, KLAUS;SIGNING DATES FROM 20150622 TO 20150627;REEL/FRAME:035985/0970 |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |