From 57b54d03a71ab76492a16239e1f426599aac647a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=A2=A6=E8=BF=9C?= <1063331231@qq.com> Date: Sat, 7 Jun 2025 20:05:31 +0800 Subject: [PATCH] =?UTF-8?q?websocket=E8=BF=9E=E6=8E=A5=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=8A=B6=E6=80=81=E7=9A=84=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iflytop/sgs/app/ws/server/WebSocketServer.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/iflytop/sgs/app/ws/server/WebSocketServer.java b/src/main/java/com/iflytop/sgs/app/ws/server/WebSocketServer.java index f1bb9fb..0ea353d 100644 --- a/src/main/java/com/iflytop/sgs/app/ws/server/WebSocketServer.java +++ b/src/main/java/com/iflytop/sgs/app/ws/server/WebSocketServer.java @@ -3,6 +3,8 @@ package com.iflytop.sgs.app.ws.server; import com.iflytop.sgs.app.model.bo.status.device.DeviceState; import com.iflytop.sgs.app.service.device.DeviceStateService; import com.iflytop.sgs.common.constant.WebSocketMessageType; +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; import jakarta.websocket.*; import jakarta.websocket.server.ServerEndpoint; import lombok.RequiredArgsConstructor; @@ -17,14 +19,23 @@ import java.util.Set; @Slf4j @ServerEndpoint("/ws") @Component -@RequiredArgsConstructor public class WebSocketServer { private static final Set sessions = Collections.synchronizedSet(new HashSet<>()); - private final DeviceStateService deviceStateService; - private final WebSocketSender webSocketService; + private static DeviceStateService staticDeviceStateService; + private static WebSocketSender staticWebSocketService; + @Autowired + private DeviceStateService deviceStateService; + @Autowired + private WebSocketSender webSocketService; + @PostConstruct + public void init() { + staticDeviceStateService = this.deviceStateService; + staticWebSocketService = this.webSocketService; + } + public WebSocketServer() {} public static void sendMessageToClients(String message) { synchronized (sessions) { for (Session session : sessions) { @@ -40,7 +51,7 @@ public class WebSocketServer { @OnOpen public void onOpen(Session session) { sessions.add(session); - webSocketService.push(WebSocketMessageType.STATUS, deviceStateService.getDeviceState()); + staticWebSocketService.push(WebSocketMessageType.STATUS, staticDeviceStateService.getDeviceState()); log.info("新连接加入,sessionId={}", session.getId()); }