首页 web前端 H5教程 vue项目中如何映入noVNC远程桌面

vue项目中如何映入noVNC远程桌面

Mar 27, 2018 pm 02:54 PM
远程

这次给大家带来vue项目中如何映入noVNC远程桌面,vue项目中映入noVNC远程桌面的注意事项有哪些,下面就是实战案例,一起来看一下。

1 、首先,先简单介绍一下概念。

VNCServer 是一个为了满足分布式用户共享服务器资源,而在服务器开启的一项服务,对应的客户端软件有图形化客户端 VNCViewer,而 noVNC 则是 HTML5 VNC 客户端,它采用 HTML 5 WebSocket, Canvas 和 JavaScript 实现。

noVNC 被普遍用在各大云计算、虚拟机控制面板中。noVNC 采用 WebSockets 实现,但是当前大多 VNC 服务器不支持 WebSocket,所以 noVNC 不能直连 VNC 服务器,而是需要开启一个代理来做 WebSockets 和 TCP sockets 之间的转换。这个代理叫做 websockify。

2 、项目中有这样一个需求,系统中有多个功能页,但是功能还包括原有的在物理终端设备上的功能(包括后来在电脑的虚拟终端客户端),这就用到了noVNC。好处是可以将其他功能系统(或称之为页面)嵌入新的项目中,还可以去点击操作上面的功能等,可以暂时解决一些问题。

3 、由于项目框架是vue,所以以下均为前端实现部分

首先是先引入noVNC的库。有两种引入方式,一是,直接下载源码到自己的项目中,此方式一些问题下面进行详细介绍;

git clone git://github.com/novnc/noVNC
登录后复制

二是,如果采用了webpack的方式,可以使用npm进行安装依赖,更方便。

npm install @novnc/novnc
登录后复制

下面是详细代码部分

HTML

<template> 
 <p class="page-home" ref="canvas"> 
 <canvas id="noVNC_canvas" width="800" height="600"> 
 Canvas not supported. 
 </canvas> 
 </p> 
</template>
登录后复制

Script

import WebUtil from '../../noVNC/app/webutil.js' 
 
import Base64 from '../../noVNC/core/base64.js' 
import Websock from '../../noVNC/core/websock.js' 
import '../../noVNC/core/des.js' 
import '../../noVNC/core/input/keysymdef.js' 
import '../../noVNC/core/input/xtscancodes.js' 
import '../../noVNC/core/input/util.js' 
import {Keyboard, Mouse} from '../../noVNC/core/input/devices.js' 
import Display from '../../noVNC/core/display.js' 
import '../../noVNC/core/inflator.js' 
import RFB from '../../noVNC/core/rfb.js' 
import '../../noVNC/core/input/keysym.js'
登录后复制

由于采用的是第一种引入方式,所以在资源引入上用了import的方式。需要注意的是在引入某些文件时,项目是基于es6的语法,所以引入外部js的方式略有差异。例如引入webutil.js文件,需要增加export default,然后才能正确使用。在引入时可以稍微修改一下文件即可。文件中有相应的备注描述。

引入资源完成后接下来就是如何去使用了,其实并不复杂。话不多说,上码。

connectVNC () {
 var
  DEFAULT_HOST = '',
  DEFAULT_PORT = '',
  DEFAULT_PASSWORD = "",
  DEFAULT_PATH = "websockify"
 ;
 var cRfb = null;
 var oTarget = document.getElementById("noVNC_canvas");
 let that = this
 if (!this.currentEquipment) {
  return
 }
 let novncPort = this.currentEquipment.novncPort
 getNovncIp().then(function (resData) {
  WebUtil.init_logging(WebUtil.getConfigVar("logging", "warn"));
  var sHost = resData.data.content.ip || DEFAULT_HOST,
  nPort = novncPort || DEFAULT_PORT,
  sPassword = DEFAULT_PASSWORD,
  sPath = DEFAULT_PATH
  ;
  cRfb = new RFB({
  "target": oTarget,<span class="space" style="white-space:pre;display:inline-block;text-indent:2em;line-height:inherit;"> // 目标</span>
  "focusContainer": top.document, // 鼠标焦点定位
  "encrypt": WebUtil.getConfigVar("encrypt", window.location.protocol === "https:"),
  "repeaterID": WebUtil.getConfigVar("repeaterID", ""),
  "true_color": WebUtil.getConfigVar("true_color", true),
  "local_cursor": WebUtil.getConfigVar("cursor", true),
  "shared": WebUtil.getConfigVar("shared", true),
  "view_only": WebUtil.getConfigVar("view_only", false),
  "onFBUComplete": that._onCompleteHandler, // 回调函数
  "onDisconnected": that._disconnected // 断开连接
  });
  // console.log('sHost:' + sHost + '--nPort:' + nPort)
  cRfb.connect(sHost, nPort, sPassword, sPath);
 })
 },
登录后复制

首先是在methods生命周期中定义了一个方法,把初始化相关的操作写在里面。然后再mounted生命周期中去调用this.connectVnc()。一定要在这个生命周期内去调用,否则canvas未初始化是不能获取到dom结构的。

简单描述一下就是,实例化一个对象,包括一些用到的方法或者属性,然后调用connect方法,并传入host,port,password,path参数即可建立连接。

其中有两个方法,一个是链接成功后的回调_.onCompleteHandler,一个是断开连接的回调_disconnected

// 远程桌面连接成功后的回调函数 
 _onCompleteHandler (rfb, fbu) { 
 // 清除 onComplete 的回调。 
 rfb.set_onFBUComplete(function () { 
 }); 
 
 var oDisplay = rfb.get_display(), 
  nWidth = oDisplay.get_width(), 
  nHeight = oDisplay.get_height(), 
 
  oView = oDisplay.get_target(), 
  nViewWidth = oView.clientWidth, 
  nViewHeight = oView.clientHeight 
 ; 
 
 // 设置当前与实际的比例。 
 oDisplay.setScale(nWidth / nViewWidth, nHeight / nViewHeight); 
 
 }
登录后复制

可以在连接成功后设置一些参数信息或者屏幕尺寸等。

做好以上操作之后,就可以在网页上看到一个远程桌面屏幕了哦。

一个简单的远程桌面,是可以操作的哦。有更多其他的参数或者要求的可以参考官网点击打开链接。或者联系我讨论哦

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Canvas如何做出3D动态的Chart图表

H5手机端页面缩放

以上是vue项目中如何映入noVNC远程桌面的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

远程桌面无法验证远程计算机的身份 远程桌面无法验证远程计算机的身份 Feb 29, 2024 pm 12:30 PM

Windows远程桌面服务允许用户远程访问计算机,对于需要远程工作的人来说非常便利。然而,当用户无法连接到远程计算机或远程桌面无法验证计算机身份时,会遇到问题。这可能是由网络连接问题或证书验证失败引起的。在这种情况下,用户可能需要检查网络连接、确保远程计算机是在线的,并尝试重新连接。另外,确保远程计算机的身份验证选项已正确配置也是解决问题的关键。通过仔细检查和调整设置,通常可以解决Windows远程桌面服务中出现的这类问题。由于存在时间或日期差异,远程桌面无法验证远程计算机的身份。请确保您的计算

如何让远程桌面连接显示对方的任务栏 如何让远程桌面连接显示对方的任务栏 Jan 03, 2024 pm 12:49 PM

远程桌面连接使用的用户非常多,很多用户在使用的时候都会遇到些小问题,比如没有显示对方的任务栏,其实很可能是对方的设置问题,下面就来看看解决方法吧。远程桌面连接怎么显示对方的任务栏:1、首先点击“设置”。2、然后再打开“个性化”。3、随后选择左侧的“任务栏”4、将图中隐藏任务栏选项关闭即可。

六款常用远程连接工具,你最中意哪一款? 六款常用远程连接工具,你最中意哪一款? Feb 22, 2024 pm 06:28 PM

Xshell“Xshell”是一款功能强大的安全终端模拟软件,支持SSH1、SSH2协议以及Windows平台的TELNET协议。通过在Windows界面下使用Xshell,用户可以方便地访问远程服务器,实现远程控制终端的操作。此外,Xshell还提供了各种外观配色方案和样式选择,使用户能够根据个人喜好进行定制,提升使用体验。Xshell的特点和优势如下:会话管理:使用会话管理器和可继承的会话配置可以轻松创建、编辑和启动会话。综合支持:支持多种验证方法、协议或算法,能够处理各种情况。本地Shel

学习并使用远程连接命令的方法 学习并使用远程连接命令的方法 Jan 12, 2024 pm 07:57 PM

对于很多从事运维工作的工程师来说,windows远程连接是非常重要的,熟练的使用远程命令可以大大的提高工作效率,今天小编就来说说远程连接命令怎么使用。微软windows操作系统中是自带有远程连接功能的,您可以通过远程连接命令来连接远程计算机,很多朋友不知道远程连接命令怎么使用,下面就来看看小编是怎么操作的吧!远程连接命令怎么用1.按键盘上的windows+R组合键键,打开运行对话框,在运行框中输入远程连接命令mstsc并回车。远程连接图-12.接着会出现远程桌面连接对话框,输入计算机名称或IP地

深度探讨Linux远程管理协议:技术实践全面指南 深度探讨Linux远程管理协议:技术实践全面指南 Feb 24, 2024 pm 02:18 PM

《Linux远程管理协议全面解读:技术实践全攻略,需要具体代码示例》随着互联网的快速发展,远程管理服务器成为了一种高效管理服务器的方法,Linux系统下的远程管理协议更是备受关注。本文将全面解读Linux远程管理协议,提供详细的技术实践攻略,并附带具体的代码示例,帮助读者深入了解并实践远程管理服务器的方法。一、SSH协议SSH(SecureShell)是一

Java远程代码执行漏洞的威胁 Java远程代码执行漏洞的威胁 Aug 08, 2023 pm 03:21 PM

Java远程代码执行漏洞的威胁Java是一门强大而广泛应用的编程语言,被众多企业和开发者用于构建安全和可靠的应用程序。然而,即使是Java也存在一些安全漏洞,其中之一就是远程代码执行漏洞。本文将介绍Java远程代码执行漏洞的威胁,并提供一个代码示例来说明。远程代码执行漏洞是指攻击者可以通过输入恶意代码,使目标应用程序执行该代码的漏洞。这种漏洞通常由于应用程序

如何处理PHP远程图片下载错误并生成相应的报错信息 如何处理PHP远程图片下载错误并生成相应的报错信息 Aug 06, 2023 pm 07:57 PM

如何处理PHP远程图片下载错误并生成相应的报错信息在开发网页应用程序时,经常会遇到从远程服务器下载图片的需求。然而,由于各种原因,下载图片时可能会遇到错误。本文将介绍如何在PHP中处理远程图片下载错误,并生成相应的报错信息。使用file_get_contents函数下载远程图片PHP中可以使用file_get_contents函数来下载远程图片。下面是一个简

揭秘Linux远程管理协议:了解技术应用的方方面面 揭秘Linux远程管理协议:了解技术应用的方方面面 Feb 24, 2024 am 09:21 AM

Linux远程管理协议一直以来都是网络管理中的重要组成部分,它的应用范围广泛,涉及到服务器管理、远程维护、监控等多个方面。在Linux系统中,有很多种远程管理协议,其中比较常见的包括SSH、Telnet、VNC等。本文将围绕这些协议展开探讨,深入探秘Linux远程管理协议的技术应用,并提供具体的代码示例。1.SSH协议SSH(SecureShell)是一

See all articles