From 0644faf2626e8d65f86b714f62e0fabc60fbb1d0 Mon Sep 17 00:00:00 2001
From: zhuangtianxiang <2913129173@qq.com>
Date: Wed, 19 Mar 2025 15:30:00 +0800
Subject: [PATCH] =?UTF-8?q?feat(message):=20=E5=AE=9E=E7=8E=B0=E5=9F=BA?=
=?UTF-8?q?=E4=BA=8E=20WebSocket=20=E7=9A=84=E8=AE=BE=E5=A4=87=E3=80=81?=
=?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=92=8C=E4=BA=A7=E5=93=81=E7=8A=B6=E6=80=81?=
=?UTF-8?q?=E6=8E=A8=E9=80=81-=20=E6=96=B0=E5=A2=9E=20WebSocket=20?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=9B=BF=E4=BB=A3=E5=8E=9F=E6=9C=89=E7=9A=84?=
=?UTF-8?q?=20SSE=20=E6=8E=A5=E5=8F=A3=20-=20=E5=AE=9E=E7=8E=B0=E9=80=9A?=
=?UTF-8?q?=E7=94=A8=E7=9A=84=20WebSocket=20=E5=A4=84=E7=90=86=E5=99=A8?=
=?UTF-8?q?=E5=92=8C=E9=85=8D=E7=BD=AE=20-=20=E6=B7=BB=E5=8A=A0=20WebSocke?=
=?UTF-8?q?t=E6=8B=A6=E6=88=AA=E5=99=A8=E7=94=A8=E4=BA=8E=E5=A4=84?=
=?UTF-8?q?=E7=90=86=E4=B8=8D=E5=90=8C=E7=9A=84=E8=B7=AF=E5=BE=84=E8=AF=B7?=
=?UTF-8?q?=E6=B1=82=20-=20=E6=9B=B4=E6=96=B0=E8=AE=BE=E5=A4=87=E3=80=81?=
=?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=92=8C=E4=BA=A7=E5=93=81=E6=9C=8D=E5=8A=A1?=
=?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=20WebSocket=20=E7=8A=B6=E6=80=81?=
=?UTF-8?q?=E6=8E=A8=E9=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 5 ++
.../websocket/GenericWebSocketHandler.java | 61 +++++++++++++++++++
.../message/websocket/WebSocketConfig.java | 27 ++++++++
.../websocket/WebSocketInterceptor.java | 60 ++++++++++++++++++
.../device/controller/DeviceController.java | 20 ++++--
.../iot/device/service/DeviceService.java | 2 +
.../service/impl/DeviceServiceImpl.java | 10 +++
.../product/controller/ProductController.java | 6 +-
8 files changed, 182 insertions(+), 9 deletions(-)
create mode 100644 src/main/java/com/zsc/edu/gateway/framework/message/websocket/GenericWebSocketHandler.java
create mode 100644 src/main/java/com/zsc/edu/gateway/framework/message/websocket/WebSocketConfig.java
create mode 100644 src/main/java/com/zsc/edu/gateway/framework/message/websocket/WebSocketInterceptor.java
diff --git a/pom.xml b/pom.xml
index cbe0096..0ae4ba0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -142,6 +142,11 @@
3.0.0
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+ 3.4.0
+
org.slf4j
slf4j-api
diff --git a/src/main/java/com/zsc/edu/gateway/framework/message/websocket/GenericWebSocketHandler.java b/src/main/java/com/zsc/edu/gateway/framework/message/websocket/GenericWebSocketHandler.java
new file mode 100644
index 0000000..382776d
--- /dev/null
+++ b/src/main/java/com/zsc/edu/gateway/framework/message/websocket/GenericWebSocketHandler.java
@@ -0,0 +1,61 @@
+package com.zsc.edu.gateway.framework.message.websocket;
+
+import org.springframework.stereotype.Component;
+import org.springframework.web.socket.TextMessage;
+import org.springframework.web.socket.WebSocketSession;
+import org.springframework.web.socket.handler.TextWebSocketHandler;
+
+import java.io.IOException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Supplier;
+
+/**
+ * @author zhuang
+ */
+@Component
+public class GenericWebSocketHandler extends TextWebSocketHandler {
+
+ private final ExecutorService executorService = Executors.newCachedThreadPool();
+
+ @Override
+ public void afterConnectionEstablished(WebSocketSession session) throws Exception {
+ // 从 session 中获取业务逻辑的 Supplier
+ Supplier