當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot 集成Guacamole客户端
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot 集成Guacamole客户端
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
SpringBoot 集成Guacamole客戶端
- 1. 前言
- 2. 安裝guacamole服務(wù)端
- 2.1. docker方式安裝guacamole服務(wù)端
- 3. 啟動guacamole服務(wù)端
- 4. 整合springboot
- 4.1. 引入pom文件
- 4.2. 創(chuàng)建Guacamole對象
- 4.3. 配置yml文件
- 4.4. 編寫websocket通信類
1. 前言
本文將指導(dǎo)你如何在Springboot中集成guacamole客戶端。
2. 安裝guacamole服務(wù)端
2.1. docker方式安裝guacamole服務(wù)端
首先是下載鏡像,Guacamole數(shù)據(jù)庫可以選擇mysql或 PostgreSQL
# 拉取guacd服務(wù)端 docker pull guacamole/guacd3. 啟動guacamole服務(wù)端
# 啟動guacamole服務(wù)端 docker run --name guacd -d -p 4822:4822 guacamole/guacd4. 整合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. 創(chuàng)建Guacamole對象
創(chuàng)建Guacamole對象用于參數(shù)接收傳遞,代碼如下所示。
package com.jc.pp.cmp.bean;/*** guacamole實體類* @author Administrator*/ public class Guacamole {/*** guacamole服務(wù)端地址*/private String host;/*** guacamole服務(wù)端端口號*/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: 48224.4. 編寫websocket通信類
創(chuàng)建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);/***返回給定會話的新隧道。如何創(chuàng)建此隧道*或檢索到的是依賴于實現(xiàn)的。**@param session 與活動WebSocket關(guān)聯(lián)的會話連接。*@param endpointConfig 為處理這個單一的連接而創(chuàng)建的端點。*@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的值// 可添加下方代碼接收參數(shù)// 通過前端Vue或者其他前端語言請求后端時動態(tài)添加參數(shù)可使得下方遠程windows服務(wù)地址動態(tài)注入Guacamole guacamole = getGuacamole();GuacamoleConfiguration configuration = new GuacamoleConfiguration();configuration.setProtocol("vnc");// 遠程windows服務(wù)的地址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;}}以上代碼配置成功以后,就可以通過前端調(diào)用@ServerEndpoint注解value中配置的地址來連接guacamole服務(wù)端了。
總結(jié)
以上是生活随笔為你收集整理的SpringBoot 集成Guacamole客户端的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站结构设计规划书
- 下一篇: ui设计-文案(CW)