日韩性视频-久久久蜜桃-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客户端的全部內容,希望文章能夠幫你解決所遇到的問題。

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