HTML and CSS Reference
VNC is extremely useful for a multitude of purposes, from software testing and
deployment to education. In a software development environment, you can test
your application in a variety of combinations of operating systems, applications and
application versions—all without leaving your own desktop. For example, you can test
your new STOMP or XMPP over WebSocket application in any browser (legacy or not)
on any type of system, such as Google Chrome on Mac OS. This ability can be extremely
useful when you need to access legacy applications that are not available or that you
cannot personally install.
VNC is also very useful for collaboration or education, where not only screen sharing
is needed but also the ability to access another's desktop to assist with using a particular
application. Imagine, for instance, an architecture student using a CAD (computer-aided
design) application to design a room. A teaching assistant might be able to better explain
to the student where to adjust dimensions without needing to have the CAD application
installed on his or her own computer, and without needing to meet the student in
person. Similarly, a technician can diagnose and fix a user's computer without needing
to be on site.
There are several protocols for remotely accessing desktops. Some of these are
platform specific, like Microsoft's Remote Desktop Protocol (RDP), X Window System or
X11 (for UNIX, Linux, and Mac OS X), Chromoting (for the Google Chromebook), Apple
Remote Desktop (ARD), and NX (for Linux and Solaris). Others, like Remote Framebuffer
(RFB), are cross-platform.
VNC is an open source technology that is based on the RFB protocol and, as such,
is platform independent. RFB is an IETF specification and is the basis for many VNC
servers, as well as a thriving community that can help provide optimizations when you
need them. Because it is so widely used, there are many resources available to help you
get started and to help you get VNC working in your network.
While VNC is fairly ubiquitous and easy to implement in your network, VNC protocols
have not typically worked well in web applications. There have been AJAX applications
for remote desktop access, but they haven't been particularly optimal because HTTP's
request-response communication is less than ideal for transmitting these protocols.
Remote desktop applications are very bidirectional in nature. Users can perform input
actions at any time. Likewise, the display can update at any time. A bidirectional transport
layer protocol is critically important for making an efficient remote desktop application.
There are plugin-based remote desktop applications that run in browsers, but with
WebSocket we can bring these applications to pure HTML5 environments.
To better understand how the underlying technology for VNC works with WebSocket,
let's take a closer look at RFB, as well as the difference between binary- and text-oriented
An Overview of the Remote Framebuffer Protocol
The Remote Framebuffer (RFB) protocol is an informational specification from the IETF
(RFC 6143). While it is not an official standard, it is widely used and there are many
interoperable implementations. RFC 6143 itself is over a decade old and has been revised
Let's break down the protocol definition. A framebuffer is an array containing all of
the pixel values displayed by a graphical computer system, and is the lowest common