tcp数据粘包处理

This commit is contained in:
qiminbao
2025-09-23 09:40:47 +08:00
parent 8658a7bef8
commit 0299bbcb5d
@@ -119,26 +119,30 @@ public class AgentDecoderHandler extends ChannelInboundHandlerAdapter {
if(endsWith){ if(endsWith){
content = content.replaceAll("agent-client:",""); content = content.replaceAll("agent-client:","");
String[] arr = content.split("@tong-ran"); String[] arr = content.split("@tong-ran");
for (String message : arr) { try {
JSONObject jsonObject = JSONObject.parseObject(message); for (String message : arr) {
String clientId = jsonObject.getString("clientId"); JSONObject jsonObject = JSONObject.parseObject(message);
String dataType = jsonObject.getString("dataType"); String clientId = jsonObject.getString("clientId");
String data = jsonObject.getString("data"); String dataType = jsonObject.getString("dataType");
if(Objects.nonNull(agentDispatcherManager)){ String data = jsonObject.getString("data");
AgentHandler msgHandler = agentDispatcherManager.getHandler(dataType + "&" + AgentDispatcher.VersionEnum.V1.value); if(Objects.nonNull(agentDispatcherManager)){
if (ObjectUtil.isNotEmpty(msgHandler)) { AgentHandler msgHandler = agentDispatcherManager.getHandler(dataType + "&" + AgentDispatcher.VersionEnum.V1.value);
AssertLog.info("<<[up-after-handle]:clientId:{},type={},[handle-content]={}", clientId, dataType, data); if (ObjectUtil.isNotEmpty(msgHandler)) {
UpMsgResponse response = msgHandler.upHandle(data, clientId ); AssertLog.info("<<[up-after-handle]:clientId:{},type={},[handle-content]={}", clientId, dataType, data);
if(Objects.nonNull(response)){ UpMsgResponse response = msgHandler.upHandle(data, clientId );
Message agentMessage = Message.builder().build(); if(Objects.nonNull(response)){
agentMessage.setClientId(clientId); Message agentMessage = Message.builder().build();
agentMessage.setDataType(response.getDataType()); agentMessage.setClientId(clientId);
agentMessage.setData(response.getContent()); agentMessage.setDataType(response.getDataType());
ctx.fireChannelRead(agentMessage);//传递到下一个handler agentMessage.setData(response.getContent());
ctx.fireChannelRead(agentMessage);//传递到下一个handler
}
} }
} }
}
}
}catch (Exception e){
AssertLog.error("=====channelRead:{}=====" + e.getMessage());
} }
} }
if (isClear) { if (isClear) {