浅析如何实现浏览器访问远程桌面/服务器界面:NoVNC - 以Web方式交付VNC远程连接
最近项目需要实现那种在线实训平台,所以会记录一下技术选型然后学到的了解到的相关东西。看下这篇知乎文章:实验楼这个网站是怎样实现的在线linux虚拟机?https://www.zhihu.com/question/29557878,这里面有涉及一些思路。
华为云也有个沙箱实验室的东西,如图:
我估计华为云的这个沙箱实验室这种就是通过这种 NoVNC 远程连接实现的,看右边还有一个类似虚拟机桌面。
一、VNC介绍
VNC (Virtual Network Console)是虚拟网络控制台的缩写,它是一款优秀的远程控制工具软件。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC中的任何远程控制软件媲美。
VNC基本上是由两部分组成:一部分是客户端的应用程序(vnc viewer);另外一部分是服务器端的应用程序(vnc server)。
VNC的基本运行原理和一些Windows下的远程控制软件很相像。VNC的服务器端应用程序在UNIX和Linux操作系统中适应性很强,图形界面十分友好。在任何安装了客户端的应用程序(vncviewer)的Linux平台的计算机都能十分方便地和安装了服务器端的应用程序(vncserver)的计算机相互连接。
二、noVNC介绍
noVNC提供一种在网页上通过html5的Canvas,访问机器上vncserver提供的vnc服务,需要做tcp到websocket的转化,才能在html5中显示出来。
网页就是一个客户端,类似win下面的vncviewer,只是此时填的不是裸露的vnc服务的ip+port,而是由noVNC提供的websockets的代理,在noVNC代理服务器上要配置每个vnc服务,noVNC提供一个标识,去反向代理所配置的vnc服务。
noVNC 被普遍用在各大云计算、虚拟机控制面板中,比如 OpenStack Dashboard 和 OpenNebula Sunstone 都用的是 noVNC。
三、具体示例
NoVNC—以Web方式交付VNC远程连接:https://blog.csdn.net/qq_37242520/article/details/103688221,这篇文章比较详细,可以参考。
还有一种就是 csdn 的跟我练项目,起初我也以为是通过这种 noVNC 的形式远程连接的,后来发现不是,原来是使用 xterm.js 实现的一个简易的 web-terminal。而我们要做的就是这种 shell 的模式,远程桌面不是我们想要的,所以转而研究 xterm。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2019-07-14 浅析如何防范HTTP报头trace方法追踪漏洞、如何防范网络传输安全(中间人劫持、接口加签加密防重放)
2019-07-14 CSP内容安全策略总结及如何抵御 XSS 攻击
2019-07-14 浅析现代CSS解决方案:数学函数min、max、clamp、calc及使用vw配合clamp实现响应式布局