有多种解决方案,但没有一个允许 100% 纯 Web 应用程序(即没有 Flash、Java 或 ActiveX)直接连接到 100% 纯 VNC 服务器。最大的问题是 Web 浏览器无法建立纯 TCP 连接。最接近的是不完整的 WebSockets 标准,但即便如此,它也是一个框架协议,它具有类似 HTTP 的握手来启动它。
即使 Adobe Flash 程序可以建立纯 TCP 连接,它们仍然要求您连接的服务器使用端口 843 或您要连接的端口 ( http://code.google.com/p/ doctype/wiki/ArticleFlashSecurity)。
如前所述,Guacamole 需要 Java 代理在其基于 HTML5 的界面和 VNC 服务器之间进行通信。
另一种选择是noVNC ( github ),它在 Javascript/HTML5 中具有完整的 VNC 客户端实现(与 VNC 协议位于代理中的 Guacamole 不同)。然而,noVNC 仍然受到 Javascript 无法建立纯 TCP 连接这一事实的限制。noVNC 使用 WebSockets 连接到服务器。noVNC 包含一个通用的 WebSockets 到 TCP 桥接器,您可以在服务器(或客户端)上运行它,并且它没有额外的依赖项需要安装。
更新:QEMU、PocketVNC 和从 LibVNCServer 派生的项目现在具有内置的 WebSocket 服务器支持,因此不需要 websockify 桥接器来连接 noVNC。另外,我忘记指出我创建了 noVNC 作为免责声明。