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