日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot 集成Guacamole客户端

發布時間:2023/12/20 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot 集成Guacamole客户端 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SpringBoot 集成Guacamole客戶端

  • 1. 前言
  • 2. 安裝guacamole服務端
    • 2.1. docker方式安裝guacamole服務端
  • 3. 啟動guacamole服務端
  • 4. 整合springboot
    • 4.1. 引入pom文件
    • 4.2. 創建Guacamole對象
    • 4.3. 配置yml文件
    • 4.4. 編寫websocket通信類


1. 前言

本文將指導你如何在Springboot中集成guacamole客戶端。

2. 安裝guacamole服務端

2.1. docker方式安裝guacamole服務端

首先是下載鏡像,Guacamole數據庫可以選擇mysql或 PostgreSQL

# 拉取guacd服務端 docker pull guacamole/guacd

3. 啟動guacamole服務端

# 啟動guacamole服務端 docker run --name guacd -d -p 4822:4822 guacamole/guacd

4. 整合springboot

4.1. 引入pom文件

pom.xml文件增加如下代碼

<!-- Main Guacamole library --> <dependency><groupId>org.apache.guacamole</groupId><artifactId>guacamole-common</artifactId><version>1.4.0</version> </dependency>

4.2. 創建Guacamole對象

創建Guacamole對象用于參數接收傳遞,代碼如下所示。

package com.jc.pp.cmp.bean;/*** guacamole實體類* @author Administrator*/ public class Guacamole {/*** guacamole服務端地址*/private String host;/*** guacamole服務端端口號*/private Integer port;public String getHost() {return host;}public void setHost(String host) {this.host = host;}public Integer getPort() {return port;}public void setPort(Integer port) {this.port = port;} }

4.3. 配置yml文件

在application.yml文件中增加如下配置。

# guacamole配置信息 guacamole_server_host: 172.16.31.11 guacamole_server_port: 4822

4.4. 編寫websocket通信類

創建WebSocketTunnel類放在合適的位置,代碼如下所示

package com.jc.pp.cmp.config;import com.jc.pp.cmp.bean.Guacamole; import com.jc.pp.cmp.exception.ServiceException; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.net.GuacamoleSocket; import org.apache.guacamole.net.GuacamoleTunnel; import org.apache.guacamole.net.InetGuacamoleSocket; import org.apache.guacamole.net.SimpleGuacamoleTunnel; import org.apache.guacamole.protocol.ConfiguredGuacamoleSocket; import org.apache.guacamole.protocol.GuacamoleConfiguration; import org.apache.guacamole.websocket.GuacamoleWebSocketTunnelEndpoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PropertiesLoaderUtils; import org.springframework.stereotype.Component;import javax.websocket.EndpointConfig; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.Properties;/*** @author Chenym* @Date 2022/11/25**/ @ServerEndpoint(value = "/ws", subprotocols = "guacamole") @Component public class WebSocketTunnel extends GuacamoleWebSocketTunnelEndpoint {private static final Logger logger = LoggerFactory.getLogger(WebSocketTunnel.class);/***返回給定會話的新隧道。如何創建此隧道*或檢索到的是依賴于實現的。**@param session 與活動WebSocket關聯的會話連接。*@param endpointConfig 為處理這個單一的連接而創建的端點。*@return 連接的隧道,如果不存在此類隧道,則為null。*@throws GuacamoleException 如果在檢索或者如果對隧道的訪問被拒絕。*/@Overrideprotected GuacamoleTunnel createTunnel(Session session, EndpointConfig endpointConfig) throws GuacamoleException {Map<String, List<String>> map = session.getRequestParameterMap();logger.info("sessionMap:{}", map);// 獲取url的值// 可添加下方代碼接收參數// 通過前端Vue或者其他前端語言請求后端時動態添加參數可使得下方遠程windows服務地址動態注入Guacamole guacamole = getGuacamole();GuacamoleConfiguration configuration = new GuacamoleConfiguration();configuration.setProtocol("vnc");// 遠程windows服務的地址configuration.setParameter("hostname", String.valueOf(map.get("nodeIp").get(0)));configuration.setParameter("port", String.valueOf(map.get("nodePort").get(0)));configuration.setParameter("ignore-cert", "true");GuacamoleSocket socket = new ConfiguredGuacamoleSocket(new InetGuacamoleSocket(guacamole.getHost(), guacamole.getPort()),configuration);return new SimpleGuacamoleTunnel(socket);}private Guacamole getGuacamole() {Guacamole guacamole = new Guacamole();try {Resource resource = new ClassPathResource("application.yml");Properties properties;properties = PropertiesLoaderUtils.loadProperties(resource);guacamole.setHost(properties.getProperty("guacamole_server_host"));guacamole.setPort(Integer.parseInt(properties.getProperty("guacamole_server_port")));} catch (IOException e) {throw new ServiceException("guacamole配置讀取異常");}return guacamole;}}

以上代碼配置成功以后,就可以通過前端調用@ServerEndpoint注解value中配置的地址來連接guacamole服務端了。

總結

以上是生活随笔為你收集整理的SpringBoot 集成Guacamole客户端的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲涩色 | 中文字幕第66页 | 国产成人av免费 | 高潮无码精品色欲av午夜福利 | 欧美性xxxx| 亚洲熟妇毛茸茸 | 欧美精品一区二区在线观看 | 日韩不卡视频在线 | 伊人影片 | 超碰狠狠| 国语对白做受69按摩 | 篠田优在线观看 | 亚一区二区 | 日韩无| wwwxx在线观看 | 亚洲欧美一区二区三区在线观看 | 图片区 小说区 区 亚洲五月 | 日本亚洲一区二区 | 日韩午夜在线视频 | 奇米影视第四色7777 | 国内精品久 | 精品欧美一区二区三区成人 | 制服丝袜影音先锋 | 恶虐女帝安卓汉化版最新版本 | 亚洲欧美另类日韩 | 亚洲国产精一区二区三区性色 | 黄视频免费在线观看 | 成人中文字幕+乱码+中文字幕 | 五月婷婷激情视频 | 欧美国产精品一区 | 国产白丝精品91爽爽久久 | 成人国产免费视频 | 国产成人传媒 | 欧美另类v | 日日摸夜夜添夜夜 | 日韩久久不卡 | 毛茸茸日本熟妇高潮 | av不卡免费 | 美女又爽又黄免费 | 国产第一页精品 | 日韩午夜免费 | 91av观看| 国产ts系列| 欧美精品人妻一区二区 | 欧美自拍视频 | 波多野结衣简介 | 国产乱码久久久久久 | 成人小视频在线免费观看 | 豆花在线观看 | 欧美日韩亚洲另类 | 成人无高清96免费 | 91久久久久久久久久久久 | 欧美日韩一区精品 | 日韩少妇一区二区 | 欧美日韩一区二区三区在线视频 | 国产精品久久中文字幕 | 成人国产精品免费观看 | 精品日日夜夜 | 亚洲一区在线看 | 97精品人妻麻豆一区二区 | 成人黄色在线观看视频 | 亚洲无码久久久久 | 成人在线综合 | 精品人妻一区二区三区四区在线 | 91亚洲视频在线 | 水果派解说av | 国产成人+综合亚洲+天堂 | 淫僧荡尼巨乳(h)小说 | www.99re7.com | 国产精品日韩av | av大全免费观看 | 亚洲123区 | 国产欧美123| 免费福利av | 激情午夜视频 | 动漫美女舌吻 | 老司机久久 | 色诱av手机版 | 午夜精品福利电影 | 精品+无码+在线观看 | 亚洲精品福利在线 | 丰满人妻一区二区三区四区53 | 一级特级片 | 懂色av中文一区二区三区天美 | hs网站在线观看 | 亚洲免费黄色片 | 免费a在线| 打开免费观看视频在线播放 | 秋霞视频在线观看 | 中文字幕日韩欧美在线 | 国产女主播在线观看 | 国产精品午夜电影 | 国产主播一区二区 | 一区二区精品免费 | 久久久久亚洲AV成人无码国产 | 国产丰满美女做爰 | 国产美女视频免费观看下载软件 | 91丨九色丨丰满 | 欧美三级网站在线观看 |