首頁 web前端 js教程 透過在vue專案中引入noVNC遠端桌面的方法步驟有哪些

透過在vue專案中引入noVNC遠端桌面的方法步驟有哪些

Jun 01, 2018 pm 02:40 PM
引入 遠端

以下就為大家分享一篇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 &#39;../../noVNC/app/webutil.js&#39; 
 
import Base64 from &#39;../../noVNC/core/base64.js&#39; 
import Websock from &#39;../../noVNC/core/websock.js&#39; 
import &#39;../../noVNC/core/des.js&#39; 
import &#39;../../noVNC/core/input/keysymdef.js&#39; 
import &#39;../../noVNC/core/input/xtscancodes.js&#39; 
import &#39;../../noVNC/core/input/util.js&#39; 
import {Keyboard, Mouse} from &#39;../../noVNC/core/input/devices.js&#39; 
import Display from &#39;../../noVNC/core/display.js&#39; 
import &#39;../../noVNC/core/inflator.js&#39; 
import RFB from &#39;../../noVNC/core/rfb.js&#39; 
import &#39;../../noVNC/core/input/keysym.js&#39;
登入後複製

由於採用的是第一種引入方式,所以在資源引進上用了import的方式。需要注意的是引入某些檔案時,專案是基於es6的語法,所以引入外部js的方式略有差異。例如引入webutil.js文件,需要增加export default,然後才能正確使用。在引入時可以稍微修改一下文件即可。文件中有對應的備註描述。

引入資源完成後接下來就是如何去使用了,其實並不複雜。話不多說,上碼。

connectVNC () {
 var
  DEFAULT_HOST = &#39;&#39;,
  DEFAULT_PORT = &#39;&#39;,
  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(&#39;sHost:&#39; + sHost + &#39;--nPort:&#39; + 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); 
 
 }
登入後複製

#可以在連線成功後設定一些參數資訊或螢幕尺寸等。

做好以上操作之後,就可以在網頁上看到一個遠端桌面螢幕了哦。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

在vue中使用jointjs的方法

#淺聊Vue下使用百度地圖的簡易方法

jQuery實作新聞播報捲動及淡入淡出效果範例

##

以上是透過在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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 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)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1274
29
C# 教程
1256
24
遠端桌面無法驗證遠端電腦的身份 遠端桌面無法驗證遠端電腦的身份 Feb 29, 2024 pm 12:30 PM

Windows遠端桌面服務允許使用者遠端存取計算機,對於需要遠端工作的人來說非常方便。然而,當使用者無法連線到遠端電腦或遠端桌面無法驗證電腦身分時,會遇到問題。這可能是由網路連線問題或憑證驗證失敗引起的。在這種情況下,使用者可能需要檢查網路連線、確保遠端電腦是線上的,並嘗試重新連線。另外,確保遠端電腦的身份驗證選項已正確配置也是解決問題的關鍵。透過仔細檢查和調整設置,通常可以解決Windows遠端桌面服務中出現的這類問題。由於存在時間或日期差異,遠端桌面無法驗證遠端電腦的身份。請確保您的計算

如何讓遠端桌面連線顯示對方的工作列 如何讓遠端桌面連線顯示對方的工作列 Jan 03, 2024 pm 12:49 PM

遠端桌面連線使用的使用者非常多,很多使用者在使用的時候都會遇到些小問題,例如沒有顯示對方的任務欄,其實很可能是對方的設定問題,下面就來看看解決方法吧。遠端桌面連線怎麼顯示對方的工作列:1、先點選「設定」。 2、然後再開啟「個人化」。 3、隨後選擇左側的「工作列」4、將圖中隱藏工作列選項關閉即可。

解決Vue報錯:無法正確引入第三方函式庫,如何解決? 解決Vue報錯:無法正確引入第三方函式庫,如何解決? Aug 18, 2023 am 10:37 AM

解決Vue報錯:無法正確引入第三方函式庫,如何解決?引入第三方函式庫是Vue開發中常見的需求,它可以幫助我們處理一些特定的業務邏輯或提供一些功能的支援。然而,在引入第三方函式庫的過程中,我們可能會遇到一些報錯,這給我們的開發帶來了一些困擾。本文將介紹一些常見的問題和解決方案,以幫助讀者更好地處理這些報錯。問題1:找不到第三方函式庫當我們嘗試使用import語句引入第三方函式庫

六款常用遠端連線工具,你最中意哪一款? 六款常用遠端連線工具,你最中意哪一款? Feb 22, 2024 pm 06:28 PM

Xshell「Xshell」是一款功能強大的安全終端模擬軟體,支援SSH1、SSH2協定以及Windows平台的TELNET協定。透過在Windows介面下使用Xshell,使用者可以輕鬆存取遠端伺服器,實現遠端控制終端的操作。此外,Xshell還提供了各種外觀配色方案和樣式選擇,使用戶能夠根據個人喜好進行客製化,提升使用體驗。 Xshell的特點和優點如下:會話管理:使用會話管理器和可繼承的會話配置可以輕鬆建立、編輯和啟動會話。綜合支援:支援多種驗證方法、協定或演算法,能夠處理各種情況。本地Shel

Vue報錯:無法正確引入插件,怎麼解決? Vue報錯:無法正確引入插件,怎麼解決? Aug 25, 2023 pm 02:21 PM

Vue報錯:無法正確引入插件,怎麼解決?引入插件是Vue開發中非常常見的操作,但有時候我們可能會遇到一些困擾,無法正確引入插件導致錯誤。本文將會介紹一些可能出現的問題以及解決方法,並給出對應的程式碼範例。插件未正確安裝/引入在使用Vue插件前,首先要確保插件已經正確安裝和引入。可以透過npm進行安裝,或直接引入CDN資源。如果是透過npm安裝的插件,需

解決瀏覽器未完全載入jquery.js檔案的方法 解決瀏覽器未完全載入jquery.js檔案的方法 Feb 25, 2024 pm 04:36 PM

如何解決瀏覽器引入jquery.js不全的問題?隨著Web開發的不斷發展,jQuery作為一款優秀的JavaScript庫被廣泛應用於前端開發中。然而,在實際開發中,有時候我們會遇到瀏覽器引入jquery.js檔案卻並未完全載入的情況,這可能會導致頁面功能出現異常或無法正常運作。那麼,我們該如何解決這個問題呢?以下將從幾個層面給出具體的解決方法。 1.使

PHP8.1引進的無伺服器(Serverless)支持 PHP8.1引進的無伺服器(Serverless)支持 Jul 09, 2023 pm 04:58 PM

PHP8.1引進的無伺服器(Serverless)支援隨著雲端運算和微服務的興起,無伺服器架構(ServerlessArchitecture)逐漸成為了一種流行的開發模式。它允許開發者專注於程式碼的編寫,而不需要關心底層的伺服器管理和負載平衡等問題。在2021年11月,PHP8.1正式發布,其中最引人注目的新功能之一就是對無伺服器的支援。無伺服器架構的核心概念

學習並使用遠端連接命令的方法 學習並使用遠端連接命令的方法 Jan 12, 2024 pm 07:57 PM

對於許多從事運維工作的工程師來說,windows遠端連線是非常重要的,熟練的使用遠端命令可以大大的提高工作效率,今天小編就來說說遠端連線命令怎麼使用。微軟windows作業系統中是自帶遠端連線功能的,您可以透過遠端連線指令來連線遠端計算機,很多朋友都不知道遠端連線指令怎麼使用,下面就來看看小編是怎麼操作的吧!遠端連線指令怎麼用1.按鍵盤上的windows+R組合鍵鍵,開啟執行對話框,在運作框中輸入遠端連線指令mstsc並回車。遠端連線圖-12.接著會出現遠端桌面連線對話框,輸入電腦名稱或IP地

See all articles