There already have been a few nice VNC web clients around for a few years, like NoVNC (http://kanaka.github.io/noVNC/, python server-side, used in Openstack and others). Unfortunately, there's no magic: you need your VNC/RDP server, then your "clientless server" (proxy socket<->websocket or alike), then your web server to host the "clientless" client.
It's becoming to be interesting when your VNC/RDP client directly supports websocket, eliminating the need of a proxy and only use a STATIC web server to host client. Wait, it's built-in for qemu since 1.4! http://git.qemu.org/?p=qemu.git;a=commit;h=0057a0d59006d00c2...
Guacamole and NoVNC are very different conceptually. NoVNC is a client for the VNC protocol that runs in your browser, and a dumb TCP-to-Websockets proxy script that you run on your server if your VNC software doesn't already support Websockets in addition to TCP. Your browser and the server still communicate using the VNC protocol, and you'll get performance no better than TCP VNC (bad performance over the internet, in my opinion).
Guacamole has much better performance. Your browser and the guacamole server communicate using a custom, better-performing protocol (http://guac-dev.org/doc/gug/protocol-reference.html). While guacamole can still connect to your server with VNC, it also supports RDP, which is also faster. Even when using Guacamole as a proxy for VNC if your guacd and VNC servers are on LAN together, because the guacamole protocol works much better over high latency connections than VNC does.
Edit: also, Guacamole doesn't use Websockets, which makes it much easier to proxy with your standard HTTP proxy software like apache, which didn't get a Websockets proxy module until 2.4 (Ubuntu 12.04 is 2.2).
"Guacamole has much better performance ... custom, better-performing protocol" -> What aspect of performance? Latency? Bandwidth? Server CPU and memory usage? Scaling? Do you have some actual performance benchmarks comparing the two? And does guacamole perform better when connecting to the same VNC server or is that comparing VNC server with an RDP server. RDP itself is a newer, more complex and more efficient protocol than VNC but VNC is supported pretty much everywhere. RDP could pretty easily be implemented in noVNC by somebody with the time (in fact it's been on the aspirational feature list for years).
With noVNC the protocol decode/encode is done in the browser (modern browsers are plenty fast enough to do this easily), whereas with Guacamole the burden of decode/encode for every client happens on the server where the proxy/client part is running. Even if you need to run websockify to proxy/bridge noVNC, the only thing it is doing is shuttling network traffic and the python implementation of websockify can easily handle lots of simultaneous clients without breaking a sweat.
noVNC was designed with Infrastructure as a Server (IaaS) providers in mind so minimizing server CPU, memory and bandwidth was a goal in the design.
Also, guacamole does use websockets when it is available.
I agree lets be careful about stating better performance unless you can post some stats. It may be true but I'm an engineer and like to see why 1 vs the other.
Guacamole is either going to use VNC or RDP protocols. Both are relatively known quantities.
I have used Guacamole on Ubuntu 14.04 desktop servers to provide HTML5 access to LXC (linux container based) Ubuntu remote desktops.
That requires some configuration w/x11rdp and xfreerdp etc but there is a freakin great toolset with the odd name of "ScaryGliders" http://scarygliders.net/2012/05/23/the-scarygliders-x11rdp-o...
that hss the build down to an art. They GIT the latest code, do the required build and then install for you on your system. After that you just install Guacamole server side and you are done.
The websocket support in QEMU allows you to connect with noVNC directly without using a websockify (proxy/bridge). You can still choose to connect to the regular VNC port using the proxy, but if you activate websockets then you can connect without it. The same is true now with libvncserver based VNC servers (e.g. x11vnc)
Agreed! Current implementations (even this one I suppose, althought I didn't have the time to check) use either websocket or older hacks like client-polling or Flash sockets. Time to enter to the future! :)
It's becoming to be interesting when your VNC/RDP client directly supports websocket, eliminating the need of a proxy and only use a STATIC web server to host client. Wait, it's built-in for qemu since 1.4! http://git.qemu.org/?p=qemu.git;a=commit;h=0057a0d59006d00c2...