Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: