From 4dd35c2051ec8ab7d12a9d9a521adf8da096e550 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Tue, 27 Aug 2024 17:03:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?update=20=E7=94=B5=E5=8D=95=E8=BD=A6?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ElectricBicyclesServerHandler.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/electricbicycles/ElectricBicyclesServerHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/electricbicycles/ElectricBicyclesServerHandler.java index 4f97f467b..d8f1e65d5 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/electricbicycles/ElectricBicyclesServerHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/electricbicycles/ElectricBicyclesServerHandler.java @@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.io.IOException; import java.net.InetSocketAddress; import java.util.List; import java.util.Map; @@ -123,13 +124,20 @@ public class ElectricBicyclesServerHandler extends ChannelInboundHandlerAdapter String channelIdShortText = channelId.asShortText(); String pileSn = PileChannelEntity.getPileSnByChannelId(channelIdShortText); log.error("发生异常 channelId:{}, pileSn:{}", channelIdShortText, pileSn, cause); - cause.printStackTrace(); + // cause.printStackTrace(); // 如果桩连到平台,在1分钟内没有发送数据过来,会报ReadTimeoutException异常 if (cause instanceof ReadTimeoutException) { - if (log.isTraceEnabled()) { - log.trace("Connection timeout 【{}】", ctx.channel().remoteAddress()); - } - log.error("【{}】发生了错误, pileSn:【{}】此连接被关闭, 此时连通数量: {}", channelId, pileSn, ChannelManagerUtil.getChannelCount()); + // if (log.isTraceEnabled()) { + // log.trace("Connection timeout 【{}】", ctx.channel().remoteAddress()); + // } + log.error("【{}】发生了错误: 读取超时, pileSn:【{}】此连接被关闭, 此时连通数量: {}", channelId, pileSn, ChannelManagerUtil.getChannelCount()); + ctx.channel().close(); + } + if (cause instanceof IOException) { + // if (log.isTraceEnabled()) { + // log.trace("客户端断开链接 【{}】", ctx.channel().remoteAddress()); + // } + log.error("【{}】发生了错误: 客户端强制断开链接, pileSn:【{}】此连接被关闭, 此时连通数量: {}", channelId, pileSn, ChannelManagerUtil.getChannelCount()); ctx.channel().close(); } // close(channelId, pileSn); From 552db1841e05b74ce65d6ea8caec213a25c82234 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Wed, 28 Aug 2024 09:09:12 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../netty/handler/electricbicycles/AbstractEBikeHandler.java | 2 +- .../netty/handler/electricbicycles/GetServerTimeHandler.java | 2 ++ .../netty/handler/electricbicycles/HeartbeatHandler.java | 2 ++ .../netty/handler/electricbicycles/RegistrationHandler.java | 2 ++ .../netty/handler/electricbicycles/SettlementUploadHandler.java | 2 ++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/AbstractEBikeHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/AbstractEBikeHandler.java index 2cba58195..95c8dd377 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/AbstractEBikeHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/AbstractEBikeHandler.java @@ -58,7 +58,7 @@ public abstract class AbstractEBikeHandler implements InitializingBean { */ protected void saveLastTimeAndCheckChannel(String pileSn, ChannelHandlerContext ctx) { String redisKey = CacheConstants.PILE_LAST_CONNECTION + pileSn; - redisCache.setCacheObject(redisKey, DateUtils.getDateTime(), CacheConstants.cache_expire_time_1d); + redisCache.setCacheObject(redisKey, DateUtils.getDateTime(), CacheConstants.cache_expire_time_30d); // 保存桩号和channel的关系 PileChannelEntity.checkChannel(pileSn, ctx); diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/GetServerTimeHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/GetServerTimeHandler.java index 37cb97b42..f17dc30fa 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/GetServerTimeHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/GetServerTimeHandler.java @@ -36,6 +36,8 @@ public class GetServerTimeHandler extends AbstractEBikeHandler { // 解析字节数组 EBikeMessageCmd22 message = (EBikeMessageCmd22) AbsEBikeMessage.parseMessage(dataProtocol.getBytes()); log.info("设备获取服务器时间:{}", JSON.toJSONString(message)); + // 保存时间 + saveLastTimeAndCheckChannel(message.getPhysicalId() + "", ctx); // 获取当前服务器10位时间戳 byte[] timeBytes = BytesUtil.getIntBytes((int) (System.currentTimeMillis() / 1000)); diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/HeartbeatHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/HeartbeatHandler.java index e7d1200b1..a77e5de1d 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/HeartbeatHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/HeartbeatHandler.java @@ -35,6 +35,8 @@ public class HeartbeatHandler extends AbstractEBikeHandler { public byte[] supplyProcess(EBikeDataProtocol dataProtocol, ChannelHandlerContext ctx) { // 解析字节数组 EBikeMessageCmd21 message = (EBikeMessageCmd21) AbsEBikeMessage.parseMessage(dataProtocol.getBytes()); + // 保存时间 + saveLastTimeAndCheckChannel(message.getPhysicalId() + "", ctx); EBikeMessageCmd21.DeviceHeartbeat deviceHeartbeat = message.getDeviceHeartbeat(); log.info("设备心跳包:{}", JSON.toJSONString(message)); return getResult(dataProtocol, Constants.zeroByteArray); diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/RegistrationHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/RegistrationHandler.java index bbf58ea16..8b90effbd 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/RegistrationHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/RegistrationHandler.java @@ -35,6 +35,8 @@ public class RegistrationHandler extends AbstractEBikeHandler { public byte[] supplyProcess(EBikeDataProtocol dataProtocol, ChannelHandlerContext ctx) { // 解析字节数组 EBikeMessageCmd20 message = (EBikeMessageCmd20) AbsEBikeMessage.parseMessage(dataProtocol.getBytes()); + // 保存时间 + saveLastTimeAndCheckChannel(message.getPhysicalId() + "", ctx); EBikeMessageCmd20.DeviceRegister deviceRegister = message.getDeviceRegister(); log.info("设备注册包:{}", JSON.toJSONString(message)); return getResult(dataProtocol, Constants.zeroByteArray); diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/SettlementUploadHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/SettlementUploadHandler.java index fd9825a8e..85d9cb3ba 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/SettlementUploadHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/electricbicycles/SettlementUploadHandler.java @@ -34,6 +34,8 @@ public class SettlementUploadHandler extends AbstractEBikeHandler { public byte[] supplyProcess(EBikeDataProtocol dataProtocol, ChannelHandlerContext ctx) { // 解析字节数组 EBikeMessageCmd03 message = (EBikeMessageCmd03) AbsEBikeMessage.parseMessage(dataProtocol.getBytes()); + // 保存时间 + saveLastTimeAndCheckChannel(message.getPhysicalId() + "", ctx); EBikeMessageCmd03.SettlementInfo settlementInfo = message.getSettlementInfo(); log.info("结算消费信息上传:{}", JSON.toJSONString(message)); return null;