From 4c777477637fa30087180182629a6f0ac7d91d1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=BB=BA=E5=9B=BD?= Date: Fri, 21 Feb 2025 14:01:18 +0800 Subject: [PATCH] =?UTF-8?q?refactor(websocket):=20=E4=BC=98=E5=8C=96=20Web?= =?UTF-8?q?Socket=20=E6=B6=88=E6=81=AF=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 Operational 类中的 selectOperational 方法,使其直接接受 JSONObject 参数 - 在 SocketServer 类中增加对 ping消息的特殊处理逻辑 - 新增 SocketUtils 类的 isNoPingMessage 方法,用于判断消息是否为 ping - 优化 WebcamShowTask 类中的异常日志输出,避免重复打印相同错误 -调整 logback.xml 中的日志文件总大小限制,从20GB 修改为 200MB --- src/main/java/org/aohe/control/Operational.java | 8 ++------ src/main/java/org/aohe/web/SocketServer.java | 9 +++++++-- src/main/java/org/aohe/web/SocketUtils.java | 14 ++++++++++++++ src/main/java/org/aohe/webcam/WebcamShowTask.java | 14 ++++++++++---- src/main/resources/logback.xml | 2 +- 5 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/aohe/control/Operational.java b/src/main/java/org/aohe/control/Operational.java index e96095f..22d4e16 100644 --- a/src/main/java/org/aohe/control/Operational.java +++ b/src/main/java/org/aohe/control/Operational.java @@ -21,15 +21,11 @@ public class Operational { private static JSONObject settings = new JSONObject(); - public static String selectOperational(String path) { - JSONObject json = JSONObject.parse(path); + public static String selectOperational(JSONObject json) { + log.info("用户发送了数据:\n {}", json.toJSONString()); //操作符 String function = json.getString("function"); - String type = json.getString("type"); - if("ping".equals(type)){ - return R.ok().toJsonStr(); - } if(function == null){ return R.fail("操作符为空").toJsonStr(); } diff --git a/src/main/java/org/aohe/web/SocketServer.java b/src/main/java/org/aohe/web/SocketServer.java index ad31eec..c27e338 100644 --- a/src/main/java/org/aohe/web/SocketServer.java +++ b/src/main/java/org/aohe/web/SocketServer.java @@ -1,5 +1,6 @@ package org.aohe.web; +import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.aohe.result.R; import org.java_websocket.WebSocket; @@ -40,8 +41,12 @@ public class SocketServer extends WebSocketServer { @Override public void onMessage(WebSocket conn, String message) { - log.info("用户发送了数据:\n {}", message); - conn.send(selectOperational(message)); + JSONObject json = SocketUtils.isNoPingMessage(message); + if (json == null){ + conn.send(R.ok().toJsonStr()); + }else{ + conn.send(selectOperational(json)); + } } @Override diff --git a/src/main/java/org/aohe/web/SocketUtils.java b/src/main/java/org/aohe/web/SocketUtils.java index 5d7bf7c..bdda5b4 100644 --- a/src/main/java/org/aohe/web/SocketUtils.java +++ b/src/main/java/org/aohe/web/SocketUtils.java @@ -1,5 +1,6 @@ package org.aohe.web; +import com.alibaba.fastjson2.JSONObject; import org.aohe.constant.SocketEnum; import java.net.UnknownHostException; @@ -70,4 +71,17 @@ public class SocketUtils { map.forEach((k,v)-> safeStop(k)); } + /** + * json 格式是否是ping,不是ping就解析 + * @param message + * @return + */ + public static JSONObject isNoPingMessage(String message){ + JSONObject json = JSONObject.parse(message); + String type = json.getString("type"); + if("ping".equals(type)){ + return json; + } + return null; + } } diff --git a/src/main/java/org/aohe/webcam/WebcamShowTask.java b/src/main/java/org/aohe/webcam/WebcamShowTask.java index df80d6f..e85cea3 100644 --- a/src/main/java/org/aohe/webcam/WebcamShowTask.java +++ b/src/main/java/org/aohe/webcam/WebcamShowTask.java @@ -16,7 +16,9 @@ import java.util.concurrent.TimeUnit; @Slf4j public class WebcamShowTask extends Thread { - private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); + + private String lastLog = ""; @Override public void run() { @@ -49,11 +51,15 @@ public class WebcamShowTask extends Thread { baos.close(); } } catch (Exception e) { - log.error(e.getMessage(), e); + if(!lastLog.equals(e.getMessage())){ + //相同的错误只打印一次 + log.error(e.getMessage()); + lastLog = e.getMessage(); + } } }, 0, 100, TimeUnit.MILLISECONDS); - try { + try { Thread.currentThread().join(); } catch (InterruptedException e) { log.error("Main thread interrupted", e); @@ -65,7 +71,7 @@ public class WebcamShowTask extends Thread { // SocketUtils.start(SocketEnum.CAM_SOCKET); // WebCamUtils.setWebcam(0); // WebCamUtils.open(); -// //File file = new File("\"C:\\Users\\JianGuo\\Pictures\\Screenshots\\abc.png"); +// //File file = new File("\"C:\\Users\\xxx\\Pictures\\Screenshots\\abc.png"); // while (true){ // SocketUtils.get(SocketEnum.CAM_SOCKET.getName()).broadcastNew(WebCamUtils.getImageByteBuffer()); // } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index d1bbc4b..8f31338 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -20,7 +20,7 @@ ${log.path}/ScanService.%d{yyyy-MM-dd}.log 60 - 20GB + 200M ${log.pattern}