如何将NoVNC集成到.net应用程序中以进行远程访问?

最佳答案

这取决于您是否要将noVNC客户端集成到.net应用程序中,或者是否希望noVNC能够连接到.net应用程序以进行查看。我不确定为什么要这样做,因为有将VNC客户端添加到.net应用程序的更有效的方法。因此,我将回答第二个选项(使用noVNC连接到.net应用程序)。

noVNC是VNC客户端;它实现了RFB/VNC protocol的客户端部分。 noVNC连接到的服务器必须实现RFB / VNC协议的服务器部分。最简单的选择是运行可以为单个Window服务的单独的VNC服务器(应用程序可以在其控制下启动VNC服务器)。否则,您必须在应用程序本身中实现所有VNC / RFB语义:


VNC认证
编码协商
随时跟踪应用程序的视觉状态
使用客户端鼠标状态和键盘状态信息执行某些操作
通过计算自客户端上次请求该区域以来已更改的矩形,来响应客户端FBU(帧缓冲区更新)请求。将这些矩形编组为客户端和服务器都支持的最佳编码。
等等


而且,Web浏览器无法启动原始TCP套接字连接,只能启动WebSocket连接。除了WebSockets握手和成帧外,WebSockets仅当前允许使用UTF-8编码的有效负载。为了解决这些限制,noVNC使用websockify在原始TCP套接字和WebSocket之间进行转换。为了避开WebSockets UTF-8的限制,websockify base64会对来自浏览器的所有流量进行编码/解码。 websockify的功能可以与VNC服务器功能一起实现。实际上,this fork of libvncserver具有内置的WebSockets(和base64编码)支持(即noVNC无需websockify即可直接连接到它)。

如果仍要尝试在.net应用程序中实现VNC / RFB和WebSockets支持,则可以使用this C# code作为WebSockets功能的参考。

07-24 18:09
查看更多