diff --git a/src/main/java/com/tongran/agent/client/netty/handler/AgentDecoderHandler.java b/src/main/java/com/tongran/agent/client/netty/handler/AgentDecoderHandler.java index a35a443..666da65 100644 --- a/src/main/java/com/tongran/agent/client/netty/handler/AgentDecoderHandler.java +++ b/src/main/java/com/tongran/agent/client/netty/handler/AgentDecoderHandler.java @@ -50,6 +50,7 @@ public class AgentDecoderHandler extends ChannelInboundHandlerAdapter { AssertLog.info("<<[up1]:IP:{},[up-content]==>{}", sessionManager.client(ctx),messages); String content = ""; + StringBuilder sb = new StringBuilder(); boolean isClear = false; String tempMsg = lruCache.get(sessionManager.client(ctx)); tempMsg = tempMsg == null ? "" : tempMsg; @@ -66,11 +67,13 @@ public class AgentDecoderHandler extends ChannelInboundHandlerAdapter { if(endsWith){ lruCache.remove(sessionManager.client(ctx)); tmpMsgSize = 0; - content = arr_msg[0]+"@tong-ran"; + sb.append(arr_msg[0]+"@tong-ran"); +// content = arr_msg[0]+"@tong-ran"; }else{ lruCache.remove(sessionManager.client(ctx)); tmpMsgSize = 0; - content = arr_msg[0]; + sb.append(arr_msg[0]); +// content = arr_msg[0]; lruCache.put(sessionManager.client(ctx), content, DateUnit.SECOND.getMillis() * 3000); } } @@ -79,15 +82,23 @@ public class AgentDecoderHandler extends ChannelInboundHandlerAdapter { if(!endsWith){ lruCache.remove(sessionManager.client(ctx)); tmpMsgSize = 0; - content = arr_msg[0]+"@tong-ran"; - lruCache.put(sessionManager.client(ctx), arr_msg[1], DateUnit.SECOND.getMillis() * 3000); + for (int i = 0; i < arr_msg.length; i++) { + if(i == arr_msg.length -1){ + lruCache.put(sessionManager.client(ctx), arr_msg[i], DateUnit.SECOND.getMillis() * 5000); + }else{ + sb.append(arr_msg[i].replaceAll("agent-server:","")+"@tong-ran"); + } + } + }else{ lruCache.remove(sessionManager.client(ctx)); tmpMsgSize = 0; - content = String.join("@tong-ran", arr_msg); + sb.append(String.join("@tong-ran", arr_msg)); +// content = String.join("@tong-ran", arr_msg); } } } + content = sb.toString(); if (tmpMsgSize > 0) { content = tempMsg + messages; endsWith = content.endsWith("@tong-ran"); @@ -95,33 +106,36 @@ public class AgentDecoderHandler extends ChannelInboundHandlerAdapter { isClear = true; }else{ lruCache.remove(sessionManager.client(ctx)); - tmpMsgSize = 0; lruCache.put(sessionManager.client(ctx), content, DateUnit.SECOND.getMillis() * 3000); } - } AssertLog.info("<<[up2]:IP:{},[up-content]==>{}", sessionManager.client(ctx),content); endsWith = content.endsWith("@tong-ran"); //判断是否是整包 if(endsWith){ + content = content.replaceAll("agent-server:",""); String[] arr = content.split("@tong-ran"); - for (String message : arr) { - JSONObject jsonObject = JSONObject.parseObject(message); - String clientId = jsonObject.getString("clientId"); - String dataType = jsonObject.getString("dataType"); - String data = jsonObject.getString("data"); - AgentHandler msgHandler = agentDispatcherManager.getHandler(dataType + "&" + AgentDispatcher.VersionEnum.V1.value); - if (ObjectUtil.isNotEmpty(msgHandler)) { - UpMsgResponse response = msgHandler.upHandle(data, clientId ); - AssertLog.info("<<[up-after-handle]:clientId:{},type={},[handle-content]={}", response.getClientId(), dataType, message); - if(Objects.nonNull(response)){ - Message agentMessage = Message.builder().build(); - agentMessage.setClientId(response.getClientId()); - agentMessage.setDataType(response.getDataType()); - agentMessage.setData(response.getContent()); - ctx.fireChannelRead(agentMessage);//传递到下一个handler + try { + for (String message : arr) { + JSONObject jsonObject = JSONObject.parseObject(message); + String clientId = jsonObject.getString("clientId"); + String dataType = jsonObject.getString("dataType"); + String data = jsonObject.getString("data"); + AgentHandler msgHandler = agentDispatcherManager.getHandler(dataType + "&" + AgentDispatcher.VersionEnum.V1.value); + if (ObjectUtil.isNotEmpty(msgHandler)) { + UpMsgResponse response = msgHandler.upHandle(data, clientId ); + AssertLog.info("<<[up-after-handle]:clientId:{},type={},[handle-content]={}", response.getClientId(), dataType, message); + if(Objects.nonNull(response)){ + Message agentMessage = Message.builder().build(); + agentMessage.setClientId(response.getClientId()); + agentMessage.setDataType(response.getDataType()); + agentMessage.setData(response.getContent()); + ctx.fireChannelRead(agentMessage);//传递到下一个handler + } } } + }catch (Exception e){ + AssertLog.error("=====channelRead:{}=====" + e.getMessage()); } } if (isClear) {