web端实现远程桌面连接(noVnc)相关知识记录

原理

浏览器不支持VNC,所以不能直接连接VNC,但是可以使用代理,使用noVNC(noVNC是一个 HTML5 VNC 客户端)通过WebSocket建立连接,而VNC Server不支持WebSocket,所以需要开启Websockify代理来做WebSocket和TCP Socket之间的转换。当浏览器访问时,会通过网络加载运行noVNC。

关于通信
VNC是基于TCP的通信,VNC server处理的始终是TCP的流,而浏览器和noVNC之间是在http基础上使用WebSocket交互,VNC server是无法处理WebSocket的流,所以引入了 websockify ,负责把WebSocket流转换为普通的TCP流,使VNC server正常工作。

传输原理
将远程计算机的桌面图像编码为Web图像格式,然后通过WebSockets或XHR(XMLHttpRequest)将图像数据传输到客户端浏览器。客户端浏览器将图像数据解码并显示在屏幕上,同时将用户的输入事件传输回远程计算机。noVNC支持多种加密和身份验证方法,以确保安全性。

执行命令

node D:\VNC\node_modules\websockify-js\websockify\websockify.js  --web// 执行websockify.js并且启动一个websocket服务器 
D:\VNC\node_modules\noVNC //找到对应入口文件,加载该目录下资源,运行noVNC
8000 // 启动服务端口为8000
localhost:5900 // 转发的VNC地址和端口

关键代码

  • websockify.js
fs.exists(filename, function(exists) {
        if(!exists) {
            return http_error(response, 404, "404 Not Found");
        }

        if (fs.statSync(filename).isDirectory()) {
            // filename += '/index.html';
            filename += '/vnc.html';
        }

        fs.readFile(filename, "binary", function(err, file) {
            if(err) {
                return http_error(response, 500, err);
            }

            var headers = {};
            var contentType = mime.contentType(path.extname(filename));
            if (contentType !== false) {
              headers['Content-Type'] = contentType;
            }

            response.writeHead(200, headers);
            response.write(file, "binary");
            response.end();
        });
    });
    读入入口文件,并且将文件以二进制形式写入服务
  • vnc.html
<div id="noVNC_container">
        <!-- Note that Google Chrome on Android doesn't respect any of these,
             html attributes which attempt to disable text suggestions on the
             on-screen keyboard. Let's hope Chrome implements the ime-mode
             style for example -->
        <textarea id="noVNC_keyboardinput" autocapitalize="off"
            autocomplete="off" spellcheck="false" tabindex="-1"></textarea>
    </div>

在该节点下生成对应的画布

  • ui.js

在这里插入图片描述connect()方法中建立连接时,生成一个rbf的实例,rbf中有具体解转码为web端桌面的操作。
ui.js中封装了连接时的各个方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Web连接远程桌面是一种通过网络连接远程桌面的方法,它使用3389口进行登录。网页版的远程桌面连接器提供了一种简单且便捷的方式来访问远程计算机,而无需安装额外的软件。 通过网页版的远程桌面连接器,用户只需要在浏览器中输入正确的网址,然后输入远程计算机的IP地址和登录凭证,就可以远程访问目标计算机的桌面。 与传统的远程桌面连接方式相比,网页版的远程桌面连接器具有以下优点: 1. 简单易用:用户只需在浏览器中输入网址和登录凭证即可,无需下载安装任何软件,使用起来更加方便。 2. 跨平台支持:无论是Windows、Mac还是Linux,只要具备一个具备浏览器和网络连接的设备,都可以使用网页版的远程桌面连接器进行远程访问。 3. 安全性高:网页版的远程桌面连接器通过加密技术保证数据传输的安全性,同时还可以通过设置登录凭证和权限来控制对目标计算机的访问权限,提高了远程访问的安全性。 总之,网页版的远程桌面连接器提供了一种简单、便捷且安全的方式来远程访问计算机。它不仅方便了用户在不同设备之间的操作,还提高了远程访问的效率和安全性。 ### 回答2: Web连接远程桌面是一种通过网页浏览器实现的方式,可以让用户通过互联网连接到远程桌面。它使用3389口作为登陆器,提供了便捷的远程桌面访问方式。 为了实现这一功能,需要借助特定的软件或工具。一种常见的方式是使用远程桌面协议(Remote Desktop Protocol,RDP),通过网页浏览器访问远程桌面。 首先,用户需要确保自己的计算机具有远程桌面功能,并且远程桌面可以通过3389口进行访问。接下来,用户可以在网页浏览器中输入特定的网址或点击相应的链接,打开远程桌面连接页面。 在连接页面中,用户需要输入目标计算机的IP地址或主机名,以及相应的用户名和密码。通过点击连接按钮,浏览器将使用3389口连接到目标计算机的远程桌面。 一旦连接成功,用户将能够看到目标计算机的桌面界面,并且可以像在本地计算机上一样操作远程计算机。用户可以打开应用程序、浏览文件、传输文件等等。所有的操作都将在远程计算机上执行,但用户可以通过本地计算机的网页浏览器进行控制和操作。 通过web连接远程桌面,用户可以方便地访问远程计算机,而不需要安装额外的软件。这种方式适用于需要在不同地点之间进行远程访问的场景,如远程办公、远程教育等。同时,它也提供了更高的安全性,通过使用加密协议来保护数据传输的安全性。 ### 回答3: Web连接远程桌面是一种通过网页进行远程桌面连接和控制的方式。对于远程桌面连接服务器,我们需要一个3389登陆器或称为远程桌面连接器。 在网页版的远程桌面连接中,我们首先需要在服务器上安装和配置3389登陆器。该登陆器允许用户通过网页登录并远程连接到服务器上的远程桌面。通常,我们需要通过一些安全的加密协议,如SSL,来确保连接的安全性。 通过一个网页界面,用户可以输入远程服务器的IP地址或域名,并提供有效的用户名和密码。一旦用户点击连接按钮,网页会调用3389登陆器来建立与远程服务器的连接。 一旦连接建立成功,用户就可以在网页上看到远程桌面的界面,并可以使用鼠标和键盘在远程桌面中进行操作。用户可以像在本地计算机上一样操作远程桌面中的应用程序和文件。 网页版的远程桌面连接提供了便捷且安全的方式,使用户能够远程访问这些桌面资源,而无需在本地安装远程桌面连接软件。这也使得远程工作成为可能,用户可以在任何有网络连接的地方访问自己的工作桌面。 总之,通过3389登陆器的网页版远程桌面连接提供了一种方便、安全且高效的方式,使用户能够远程访问和控制远程桌面资源。这对于远程工作、远程学习和远程维护等方面都非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值