I’m constantly amazed at what developers are able to accomplish now with browser-based technologies. I’ve used VNC for years to remotely manage PCs and servers and it’s a great tool for sure. Never in a million years would I have imagined that you could build an implementation of it using HTML5. That’s what Joel Martin has done with the HTML5-powered noVNC VNC client.
By leveraging WebSockets and Canvas, noVNC is able to remotely connected to a box and render our the screen. Here’s the main caveat though (via Joel’s Github repo):
“Unless you are using a VNC server with support for WebSockets connections (only my fork of libvncserver currently), you need to use a WebSockets to TCP socket proxy. There is a python proxy included (‘websockify’). One advantage of using the proxy is that it has builtin support for SSL/TLS encryption (i.e. “wss://”).”
Regardless, this is still hot and a testament to how powerful web technologies are becoming. You also have to give credit to Joel for some innovative thinking and skills. Check out the video here:
noVNC currently works on all modern browsers and for those that don’t support WebSockets, it falls back to the web-socket-js polyfill for support. For IE9, you can also use the WebSockets prototype offered on the Microsoft HTML5 Labs site.