RETIRED, further work has moved to Debian project infrastructure
Go to file
Solly Ross c5e051b3b3 Use Typed Arrays for the Websock receive queue
**This commit removes Base64 (and Flash) support**

This commit converts websock.js to used Typed Arrays for the
receive queue (and tweaks rfb.js to ensure that it continues
to function, since only Firefox implements
`%TypedArray%.prototype.slice`).  Base64 support was removed
to simplify code paths, and pave the way for using Typed Arrays
for the send queue as well.

This provides two advantages: first, we allocate a buffer ahead
of time, meaning the browser doesn't have to do any work dynamically
increasing the receive queue size.  Secondly, we are now able to pass
around Typed Array Views (e.g. `Uint8Array`), which are lightweight, and
don't involve copying.

The downside is that we initially allocate more memory -- we currently
start out with 4 MiB, and then automatically double when it looks like
the amount unused is getting to small.

The commit also explicitly adds a check to the compacting logic that
avoids calling the copy functions if `_rQlen === _rQi`.
2015-08-06 14:47:03 -04:00
docs Use Typed Arrays for the Websock receive queue 2015-08-06 14:47:03 -04:00
images Fixes #498 - Add the ability to toggle fullscreen mode 2015-06-25 22:37:05 +02:00
include Use Typed Arrays for the Websock receive queue 2015-08-06 14:47:03 -04:00
tests Use Typed Arrays for the Websock receive queue 2015-08-06 14:47:03 -04:00
utils WIP: Switch to Pako for zlib 2015-08-06 14:47:03 -04:00
.gitignore Make sure websockify is cloned to the correct dir 2015-02-17 17:54:21 -05:00
.gitmodules Use Typed Arrays for the Websock receive queue 2015-08-06 14:47:03 -04:00
.travis.yml CI: Switch to Container-Based Travis 2015-08-06 14:43:02 -04:00
CONTRIBUTING.md Added in guidelines for contributing to noVNC 2014-11-02 13:27:06 -05:00
LICENSE.txt Use Typed Arrays for the Websock receive queue 2015-08-06 14:47:03 -04:00
README.md Use Typed Arrays for the Websock receive queue 2015-08-06 14:47:03 -04:00
favicon.ico Add logo, favicon. 2011-02-03 11:04:32 -06:00
karma.conf.js WIP: Switch to Pako for zlib 2015-08-06 14:47:03 -04:00
package.json Merge pull request #415 from jimdigriz/fixes 2015-04-07 14:29:46 -04:00
vnc.html Fixes #498 - Add the ability to toggle fullscreen mode 2015-06-25 22:37:05 +02:00
vnc_auto.html WIP: Switch to Pako for zlib 2015-08-06 14:47:03 -04:00

README.md

noVNC: HTML5 VNC Client

Build Status

Description

noVNC is a HTML5 VNC client that runs well in any modern browser including mobile browsers (iPhone/iPad and Android).

Many companies/projects have integrated noVNC including Ganeti Web Manager, OpenStack, OpenNebula, and LibVNCServer. See the Projects and Companies wiki page for a more complete list with additional info and links.

News/help/contact

Notable commits, announcements and news are posted to @noVNC

If you are a noVNC developer/integrator/user (or want to be) please join the noVNC discussion group

Bugs and feature requests can be submitted via github issues. If you are looking for a place to start contributing to noVNC, a good place to start would be the issues that are marked as "patchwelcome".

If you want to show appreciation for noVNC you could donate to a great non-profits such as: Compassion International, SIL, Habitat for Humanity, Electronic Frontier Foundation, Against Malaria Foundation, Nothing But Nets, etc. Please tweet @noVNC if you do.

Features

  • Supports all modern browsers including mobile (iOS, Android)
  • Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG
  • WebSocket SSL/TLS encryption (i.e. "wss://") support
  • 24-bit true color and 8 bit colour mapped
  • Supports desktop resize notification/pseudo-encoding
  • Local or remote cursor
  • Clipboard copy/paste
  • Clipping or scolling modes for large remote screens
  • Easy site integration and theming (3 example themes included)
  • Licensed under the MPL 2.0

Screenshots

Running in Chrome before and after connecting:

 

See more screenshots here.

Browser Requirements

  • HTML5 Canvas (with createImageData): Chrome, Firefox 3.6+, iOS Safari, Opera 11+, Internet Explorer 9+, etc.

  • HTML5 WebSockets and Typed Arrays

  • Fast Javascript Engine: this is not strictly a requirement, but without a fast Javascript engine, noVNC might be painfully slow.

  • See the more detailed browser compatibility wiki page.

Server Requirements

Unless you are using a VNC server with support for WebSockets connections (such as x11vnc/libvncserver, QEMU, or PocketVNC), you need to use a WebSockets to TCP socket proxy. There is a python proxy included ('websockify').

Quick Start

  • Use the launch script to start a mini-webserver and the WebSockets proxy (websockify). The --vnc option is used to specify the location of a running VNC server:

    ./utils/launch.sh --vnc localhost:5901

  • Point your browser to the cut-and-paste URL that is output by the launch script. Enter a password if the VNC server has one configured. Hit the Connect button and enjoy!

Other Pages

Authors/Contributors

  • Core team:

  • Notable contributions:

    • UI and Icons : Chris Gordon
    • Original Logo : Michael Sersen
    • tight encoding : Michael Tinglof (Mercuri.ca)
  • Included libraries:

    • as3crypto : Henri Torgemane (code.google.com/p/as3crypto)
    • base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net)
    • DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs)
    • Pako : Vitaly Puzrin (https://github.com/nodeca/pako)