From 7d74f3fd087d4a8192ed556a6c2e3a2ea3c81cff Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期五, 28 三月 2025 17:43:48 +0800
Subject: [PATCH] 1. 新增扬尘监测数据上传功能

---
 src/main/kotlin/cn/flightfeather/supervision/socket/WebSocketMessageParser.java |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/socket/WebSocketMessageParser.java b/src/main/kotlin/cn/flightfeather/supervision/socket/WebSocketMessageParser.java
new file mode 100644
index 0000000..e3ba70f
--- /dev/null
+++ b/src/main/kotlin/cn/flightfeather/supervision/socket/WebSocketMessageParser.java
@@ -0,0 +1,51 @@
+package cn.flightfeather.supervision.socket;
+
+import cn.flightfeather.supervision.common.utils.JsonUtil;
+import org.springframework.util.StringUtils;
+
+public class WebSocketMessageParser {
+    private static final String START_STR = "##";
+    private static final String SPLIT_STR = "&&";
+    private static final String END_STR = "%%";
+
+    /**
+     * 娑堟伅鏍煎紡鏍¢獙
+     * @param message 娑堟伅
+     * @return 鏍煎紡鏄惁鍚堣
+     */
+    private static boolean verificationMessage(String message) {
+        if (StringUtils.isEmpty(message)) {
+            return false;
+        }
+        if (!message.startsWith(START_STR)) {
+            return false;
+        }
+        if (!message.endsWith(END_STR)) {
+            return false;
+        }
+        return true;
+    }
+    /**
+     * 瑙f瀽鍑虹被鍨嬪拰鍐呭
+     * @param message socket娑堟伅涓殑data瀛楁
+     * @return 瑙f瀽缁撴灉锛屽鏋滄牸寮忎笉姝g‘鍒欒繑鍥瀗ull
+     */
+    public static WebSocketMessage decodeMessage(String message) {
+        if (!verificationMessage(message)) {
+            // 鍙戞尌涓�涓笉浼氳澶勭悊鐨勬秷鎭�
+            return new WebSocketMessage(-1, "");
+        }
+        WebSocketMessage webSocketMessage = new WebSocketMessage();
+        String[] parts = message.substring(START_STR.length(), message.length() - END_STR.length()).split(SPLIT_STR);
+        webSocketMessage.setType(Integer.parseInt(parts[0]));
+        webSocketMessage.setContent(JsonUtil.INSTANCE.getGson().fromJson(parts[1], Object.class));
+        return webSocketMessage;
+    }
+    /**
+     * 鐢熸垚鎸囧畾鏍煎紡鐨勬秷鎭瓧绗︿覆
+     * @return 鐢熸垚鐨勬秷鎭瓧绗︿覆
+     */
+    public static String encodeMessage(WebSocketMessage webSocketMessage) {
+        return START_STR + webSocketMessage.getType() + SPLIT_STR + JsonUtil.INSTANCE.getGson().toJson(webSocketMessage.getContent(), webSocketMessage.getContent().getClass()) + END_STR;
+    }
+}

--
Gitblit v1.9.3