From 0633a284073e6486cb180df191afa4145736b74e Mon Sep 17 00:00:00 2001
From: jiangs <373297395@qq.com>
Date: Tue, 18 Nov 2025 20:29:58 +0800
Subject: [PATCH 1/2] =?UTF-8?q?ws=E6=9C=8D=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lis-interfaceCommon/pom.xml | 6 ++
.../config/WebSocketConfiguration.java | 19 +++++
.../websocket/WebSocketServer.java | 73 +++++++++++++++++++
pom.xml | 6 ++
4 files changed, 104 insertions(+)
create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/config/WebSocketConfiguration.java
create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java
diff --git a/lis-interfaceCommon/pom.xml b/lis-interfaceCommon/pom.xml
index c29ca96..dc457d0 100644
--- a/lis-interfaceCommon/pom.xml
+++ b/lis-interfaceCommon/pom.xml
@@ -70,6 +70,12 @@
pinyin4j
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/config/WebSocketConfiguration.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/config/WebSocketConfiguration.java
new file mode 100644
index 0000000..bb20781
--- /dev/null
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/config/WebSocketConfiguration.java
@@ -0,0 +1,19 @@
+package com.czlis.interfaceCommon.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+
+/**
+ * WebSocket配置类,用于注册WebSocket的Bean
+ */
+@Configuration
+public class WebSocketConfiguration {
+
+ @Bean
+ public ServerEndpointExporter serverEndpointExporter() {
+ return new ServerEndpointExporter();
+ }
+
+}
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java
new file mode 100644
index 0000000..1c75e83
--- /dev/null
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java
@@ -0,0 +1,73 @@
+package com.czlis.interfaceCommon.websocket;
+
+
+import org.springframework.stereotype.Component;
+
+import javax.websocket.OnClose;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * WebSocket服务
+ */
+@Component
+@ServerEndpoint("/ws/{sid}")
+public class WebSocketServer {
+
+ //存放会话对象
+ private static Map sessionMap = new HashMap();
+
+ /**
+ * 连接建立成功调用的方法
+ */
+ @OnOpen
+ public void onOpen(Session session, @PathParam("sid") String sid) {
+ System.out.println("客户端:" + sid + "建立连接");
+ sessionMap.put(sid, session);
+ }
+
+ /**
+ * 收到客户端消息后调用的方法
+ *
+ * @param message 客户端发送过来的消息
+ */
+ @OnMessage
+ public void onMessage(String message, @PathParam("sid") String sid) {
+ System.out.println("收到来自客户端:" + sid + "的信息:" + message);
+ }
+
+ /**
+ * 连接关闭调用的方法
+ *
+ * @param sid
+ */
+ @OnClose
+ public void onClose(@PathParam("sid") String sid) {
+ System.out.println("连接断开:" + sid);
+ sessionMap.remove(sid);
+ }
+
+ /**
+ * 群发
+ *
+ * @param message
+ */
+ public void sendToAllClient(String message) {
+ Collection sessions = sessionMap.values();
+ for (Session session : sessions) {
+ try {
+ //服务器向客户端发送消息
+ session.getBasicRemote().sendText(message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index 1b6d50a..dc57d48 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,6 +123,12 @@
test
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+ ${spring-boot.version}
+
+
com.alibaba
From f8d625ae337a060dcb9a0a42b2698435ede44242 Mon Sep 17 00:00:00 2001
From: jiangs <373297395@qq.com>
Date: Wed, 19 Nov 2025 14:18:14 +0800
Subject: [PATCH 2/2] =?UTF-8?q?ws=E4=BB=AA=E5=99=A8=E9=80=9A=E8=AE=AF?=
=?UTF-8?q?=E7=B1=BB=EF=BC=8C=E4=BF=AE=E6=94=B9tomcat=E4=B8=BA112=E7=89=88?=
=?UTF-8?q?=E6=9C=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pojo/websocket/WSParam.java | 12 ++++
.../pojo/websocket/WebSocketParam.java | 14 +++++
.../websocket/WebSocketInstrComm.java | 59 +++++++++++++++++++
.../websocket/WebSocketServer.java | 25 ++++----
.../czlis/system/config/SecurityConfig.java | 1 +
pom.xml | 2 +-
6 files changed, 99 insertions(+), 14 deletions(-)
create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/websocket/WSParam.java
create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/websocket/WebSocketParam.java
create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketInstrComm.java
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/websocket/WSParam.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/websocket/WSParam.java
new file mode 100644
index 0000000..ba1876a
--- /dev/null
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/websocket/WSParam.java
@@ -0,0 +1,12 @@
+package com.czlis.interfaceCommon.pojo.websocket;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class WSParam {
+ private String yq;
+}
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/websocket/WebSocketParam.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/websocket/WebSocketParam.java
new file mode 100644
index 0000000..691b824
--- /dev/null
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/websocket/WebSocketParam.java
@@ -0,0 +1,14 @@
+package com.czlis.interfaceCommon.pojo.websocket;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.websocket.Session;
+
+@Data
+@AllArgsConstructor
+public class WebSocketParam {
+ private Session session;
+ private WSParam wsParam;
+}
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketInstrComm.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketInstrComm.java
new file mode 100644
index 0000000..349ee16
--- /dev/null
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketInstrComm.java
@@ -0,0 +1,59 @@
+package com.czlis.interfaceCommon.websocket;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.czlis.interfaceCommon.pojo.websocket.WSParam;
+import com.czlis.interfaceCommon.pojo.websocket.WebSocketParam;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.OnMessage;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.util.Collection;
+
+/**
+ * ws仪器通讯类
+ */
+@Component
+@ServerEndpoint("/ws/instr/{sid}")
+public class WebSocketInstrComm extends WebSocketServer {
+
+ /**
+ * 接收消息
+ * @param message 客户端发送过来的消息
+ * @param sid
+ */
+ @Override
+ @OnMessage
+ public void onMessage(String message,@PathParam("sid") String sid) {
+ super.onMessage(message, sid);
+ String yq = "";
+ try{
+ JSONObject jsonObject = JSONUtil.parseObj(message);
+ yq = jsonObject.getStr("yq");
+ }catch (Exception e){
+
+ }
+ sessionMap.put(sid,new WebSocketParam(sessionMap.get(sid).getSession(),new WSParam(yq)));
+ System.out.println(sessionMap);
+ }
+
+ /**
+ * 给指定的客户端发消息
+ * @param message
+ */
+ public void sendToSingleClient(String message,String yq){
+ Collection sessions = sessionMap.values();
+ for (WebSocketParam webSocketParam : sessions) {
+ String yq1 = webSocketParam.getWsParam().getYq();
+ try {
+ if(yq1.equals(yq)){
+ //服务器向客户端发送消息
+ webSocketParam.getSession().getBasicRemote().sendText(message);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java
index 1c75e83..12ae285 100644
--- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/websocket/WebSocketServer.java
@@ -1,27 +1,25 @@
package com.czlis.interfaceCommon.websocket;
-import org.springframework.stereotype.Component;
+
+import com.czlis.interfaceCommon.pojo.websocket.WebSocketParam;
+
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
/**
* WebSocket服务
*/
-@Component
-@ServerEndpoint("/ws/{sid}")
+
public class WebSocketServer {
//存放会话对象
- private static Map sessionMap = new HashMap();
+ protected static Map sessionMap = new HashMap();
/**
* 连接建立成功调用的方法
@@ -29,7 +27,8 @@ public class WebSocketServer {
@OnOpen
public void onOpen(Session session, @PathParam("sid") String sid) {
System.out.println("客户端:" + sid + "建立连接");
- sessionMap.put(sid, session);
+ session.setMaxTextMessageBufferSize(8192000);
+ sessionMap.put(sid,new WebSocketParam(session,null));
}
/**
@@ -54,16 +53,16 @@ public class WebSocketServer {
}
/**
- * 群发
+ * 给所有客户端群发
*
* @param message
*/
public void sendToAllClient(String message) {
- Collection sessions = sessionMap.values();
- for (Session session : sessions) {
+ Collection sessions = sessionMap.values();
+ for (WebSocketParam webSocketParam : sessions) {
try {
//服务器向客户端发送消息
- session.getBasicRemote().sendText(message);
+ webSocketParam.getSession().getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
diff --git a/lis-system/src/main/java/com/czlis/system/config/SecurityConfig.java b/lis-system/src/main/java/com/czlis/system/config/SecurityConfig.java
index e08d166..4499fe1 100644
--- a/lis-system/src/main/java/com/czlis/system/config/SecurityConfig.java
+++ b/lis-system/src/main/java/com/czlis/system/config/SecurityConfig.java
@@ -113,6 +113,7 @@ public class SecurityConfig {
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**","/printPDF/**","/graphs/**").permitAll()
.antMatchers("/doc.html").permitAll() //Knife4j 过滤
+ .antMatchers("/ws/**").permitAll() //websocket过滤
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated();
})
diff --git a/pom.xml b/pom.xml
index dc57d48..9662477 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
7.2.5
- 9.0.98
+ 9.0.112
1.2.13
5.7.12
5.3.39