There's a javascript VNC client that was created during a LinkedIn Intern Hackday that could solve the problem if a different approach is used on the backend. Each instance would need a virtual framebuffer. The js vnc client is a little buggy, but with some cleanup it worked quite well for a similar project that involved making the Android emulator available in a browser.