webvnc novnc 方案

      網友投稿 1508 2025-04-04

      項目背景


      這兩天領導派了一個活,要求在我們現有的物聯網平臺做一個功能,功能的大致是這樣的。

      在瀏覽器端點擊一個設備鏈接這個設備的桌面。并且能夠進行文件,命令行的操作。

      其實就是一個web版的vnc鏈接功能。我們知道如果兩個設備需要遠程連接。除了使用teamview或向日葵,這種第三方的軟件,就是使用vnc來遠程連接設備。

      這里說明一下vnc

      vncserver 是一個為了滿足分布式用戶共享服務器上面的資源,而在服務器上開啟的一項服務,對應的客戶端軟件為vncviewer;它也可以是不同的操作系統,比如利用windows遠程訪問linux系統資源的一種遠程訪問方式。

      在服務器上,或者被操控的設備上安裝vncserver,在其他設備上安裝vncviewer。這樣二者就能夠單向訪問資源了。

      webvnc novnc 方案

      概念理解清楚了,我們在來分析一下需求。如果需求不要去在瀏覽器中實現,其實這個功能是很完成的。就是給一臺電腦安裝上vncviewer,給其他所有待控制的設備安裝上vncserver。使用ip地址+密碼就能進行鏈接控制。

      但一旦要求在瀏覽器中就比較麻煩了。

      開始調研

      其實一接到這個需求,我是懵圈的,我一個前端,你讓我去調用這種方案。我連linux命令都不會敲幾個。

      沒辦法就要想辦法,領導把問題拋給你,是相信你。知道你能完成。

      首先我想到的是在github上找找相關的項目,搜索web-vnc,語言設置為javascript

      點擊此處鏈接即可查看搜索結果

      還真發現了幾個項目。

      以下是截圖。

      首先是noVNC這個項目,star很多,看描述完全就是我需要的功能

      該項目的特征如下

      支持所有現代瀏覽器,包括移動設備(iOS,Android)

      支持的VNC編碼:raw,copyrect,rre,hextile,tight,tightPNG

      支持縮放,裁剪和調整桌面大小

      本地光標渲染

      剪貼板復制/粘貼

      翻譯

      觸摸手勢可模擬常見的鼠標操作

      主要在MPL 2.0下獲得許可,有關詳細信息,請參見 許可文檔

      官方的兩個效果圖

      瀏覽器的要求是 Chrome 49, Firefox 44, Safari 11, Opera 36, Edge 79

      足夠使用了。而且我們平臺用戶都是不會用IE。

      探索實踐

      方案找到了,就開始真正的著手去做,領導讓你做方案,你不能僅僅把這個項目丟給他,你需要做出一套完整的

      詳細的,可落地的方案。 每一步要做什么,安裝那些軟件,如何配置參數,那些做不到,那些需要注意。

      說做就做吧

      我有三臺機器,本地虛擬機,騰訊云服務器,鯤鵬云服務器,我打算用其中一臺來做web-vnc的方案。

      這里先來簡單介紹一下,noVNC的原理。

      noVNC是將一個設備的vnc服務使用websocket代理起來,并通過一個web服務來供用戶使用。

      原理一句話就能說完。但要真正理解去不容易。

      首先你的設備需要安裝并啟動了vnc,測試這一步可以使用vncviewer來鏈接設備,能正常顯示頁面則表示vnc啟動成功。

      vnc啟動成功后,還需要啟動noVNC的一個websocket代理,這個代理所做的事情就是將vnc的服務代理到另一個端口,并通過websocket服務來提供訪問。

      代理啟動后,我們還要針對這個websocket來進行編碼,處理返回的數據,發送請求。所幸這一步noVNC已經做好了,給我們提供了npm包支持。

      通過看官方文檔,以及查閱資料,將這些概念流程都搞清楚了。下面就是動手安裝了。

      首先在設備上安裝vnc服務,并啟動一個服務

      sudo apt-get install xfce4 sudo apt-get install vnc4server sudo apt-get install xrdp

      1

      2

      3

      4

      編輯

      sudo vi ~/.vnc/xstartup

      1

      替換一下內容

      #!/bin/sh export XKL_XMODMAP_DISABLE=1 unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS gnome-panel & gnome-settings-daemon & metacity & nautilus & gnome-terminal &

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      啟動vncserver

      vncserver

      1

      這種方式啟動的vnc一般都是5901端口,端口號隨著vnc服務累加,5902,5903,

      官方提供了二種方案來安裝啟動noVNC

      第一種:

      源碼啟動安裝

      git clone https://github.com/novnc/noVNC.git cd noVNC ./utils/launch.sh --vnc localhost:5901

      1

      2

      3

      運行launch.sh腳本可以自動地下載,并啟動noVNC的姐妹項目websocket的代理。

      代理項目是這個

      執行日志

      Warning: could not find self.pem Using local websockify at /home/fizz/noVNC/utils/websockify/run Starting webserver and WebSockets proxy on port 6080 /home/fizz/noVNC/utils/websockify/websockify/websocket.py:31: UserWarning: no 'numpy' module, HyBi protocol will be slower warnings.warn("no 'numpy' module, HyBi protocol will be slower") WebSocket server settings: - Listen on :6080 - Web server. Web root: /home/fizz/noVNC - No SSL/TLS support (no cert file) - proxying from :6080 to localhost:5901 Navigate to this URL: http://ubuntu:6080/vnc.html?host=ubuntu&port=6080 Press Ctrl-C to exit

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      腳本有很多參數,可直接看shell源碼

      第二種:

      使用snap安裝。

      sudo snap install novnc novnc --listen 6081 --vnc localhost:5901 # /snap/bin/novnc if /snap/bin is not in your PATH

      1

      2

      注意snap不能在arm解構的設備上使用,比較坑。建議還是使用源碼安裝部署。可以將源碼放到oss上以加速訪問下載。

      項目啟動后就可以使用ip+端口號來訪問noVNC的服務。默認的端口是6080,你也可以添加 --listen 6081來修改暴露的端口

      使用瀏覽器打開地址會,會看到這個一個頁面。

      看到這里方案算是差不多了。下面開始想方案。

      詳細方案制定

      環境要求

      要使用瀏覽器連接虛擬機的VNC,需要保證滿足一下條件

      ? 虛擬機已安裝桌面軟件

      ? 虛擬機已安裝vncserver

      ? 虛擬機已安裝noVNC

      ? 虛擬機已啟動noVNC的代理

      ? 瀏覽版本要求 Chrome 49, Firefox 44, Safari 11, Opera 36, Edge 79

      安裝運行noVNC(linux系統)

      可使用snap來安裝, 但arm架構不支持此方法

      sudo snap install novnc sudo novnc --listen 6081 --vnc localhost:5901 /snap/bin/novn

      1

      2

      3

      5901 為vnc端口

      6081 為web服務端口

      源碼來部署

      git clone https://github.com/novnc/noVNC.git cd noVNC ./utils/launch.sh --vnc localhost:5901 --listen 6080

      1

      2

      3

      運行noVNC項目中的launch.sh腳本可以自動下載并開啟websockify,啟動一個webserver。

      這個web服務就包含了訪問服務器vnc的所有前端資源。只需要通過一個連接就可以訪問。 客戶端無需任何集成步驟。

      效果圖

      相關代碼庫與功能

      noVNC GitHub

      noVNC官網

      其他項目的使用

      npm 庫

      web前端 虛擬化

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:用PPT中的表格工具模仿優秀的網頁設計(PPT表格工具)
      下一篇:頁眉頁腳如何在首頁不設置(頁眉頁腳怎么不設置第一頁)
      相關文章
      亚洲无成人网77777| 亚洲天天做日日做天天欢毛片 | 亚洲不卡在线观看| 久久久久亚洲AV成人无码网站| 国产综合亚洲专区在线| 亚洲av无码成人精品区在线播放 | 亚洲同性男gay网站在线观看| 亚洲精品在线不卡| 亚洲精品免费在线视频| 亚洲视频网站在线观看| 亚洲成人动漫在线观看| 亚洲成人午夜电影| 456亚洲人成影院在线观| 亚洲欧美日韩中文高清www777| 亚洲日韩看片无码电影| 亚洲国产精品成人午夜在线观看 | 九月婷婷亚洲综合在线| 亚洲国产精品无码久久九九 | 国产偷国产偷亚洲高清日韩 | 亚洲人成网站18禁止| 亚洲爆乳成av人在线视菜奈实| 亚洲AV无码专区在线观看成人| 亚洲AV成人无码网站| 亚洲 小说区 图片区 都市| 亚洲第一成人影院| 亚洲中文字幕无码爆乳AV| 久久夜色精品国产亚洲| 亚洲四虎永久在线播放| 亚洲成人午夜电影| 亚洲欧美日韩综合久久久久| 午夜亚洲国产理论片二级港台二级 | 亚洲AV永久无码精品一百度影院| 亚洲av色福利天堂| 亚洲电影在线播放| 亚洲人成77777在线观看网| 亚洲s码欧洲m码吹潮| 亚洲成AV人在线观看网址| a级亚洲片精品久久久久久久| 久久精品国产亚洲av麻| 91亚洲视频在线观看| 亚洲精品午夜国产va久久|