From 5bbb623edd0c72d1dd2169a6cb23040d09195f87 Mon Sep 17 00:00:00 2001
From: chenfufeng
Date: Wed, 18 May 2022 16:26:18 +0800
Subject: [PATCH] =?UTF-8?q?[Update]=E4=BC=98=E5=8C=96=E8=BF=9E=E6=8E=A5?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
gradle.properties | 24 +++++++--------
.../com/mogo/telematic/NSDNettyManager.java | 2 +-
.../mogo/telematic/client/NettyTcpClient.java | 6 +++-
.../client/handler/NettyClientHandler.java | 22 --------------
.../client/handler/ReconnectHandler.kt | 29 +++++++++++--------
.../client/listener/NettyClientListener.java | 4 +--
6 files changed, 37 insertions(+), 50 deletions(-)
diff --git a/gradle.properties b/gradle.properties
index 98395db..b3244e0 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -36,26 +36,26 @@ PASSWORD=xintai2018
RELEASE=true
# AI CLOUD 云平台
# 工具类
-MOGO_UTILS_VERSION=1.3.56
+MOGO_UTILS_VERSION=1.3.57
# 网络请求
-MOGO_NETWORK_VERSION=1.3.56
+MOGO_NETWORK_VERSION=1.3.57
# 网络DNS
-MOGO_HTTPDNS_VERSION=1.3.56
+MOGO_HTTPDNS_VERSION=1.3.57
# 鉴权
-MOGO_PASSPORT_VERSION=1.3.56
+MOGO_PASSPORT_VERSION=1.3.57
# 常链接
-MOGO_SOCKET_VERSION=1.3.56
+MOGO_SOCKET_VERSION=1.3.57
# 数据采集
-MOGO_REALTIME_VERSION=1.3.56
+MOGO_REALTIME_VERSION=1.3.57
# 探路,道路事件发布,获取
-MOGO_TANLU_VERSION=1.3.56
+MOGO_TANLU_VERSION=1.3.57
# 直播推流
-MOGO_LIVE_VERSION=1.3.56
+MOGO_LIVE_VERSION=1.3.57
# 直播拉流
-MOGO_TRAFFICLIVE_VERSION=1.3.56
+MOGO_TRAFFICLIVE_VERSION=1.3.57
# 定位服务
-MOGO_LOCATION_VERSION=1.3.56
+MOGO_LOCATION_VERSION=1.3.57
# 远程通讯模块
-MOGO_TELEMATIC_VERSION=1.3.56
+MOGO_TELEMATIC_VERSION=1.3.57
# v2x
-MOGO_V2X_VERSION=1.3.56
+MOGO_V2X_VERSION=1.3.57
diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java
index ae5f991..78cd7c9 100644
--- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java
+++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java
@@ -243,7 +243,7 @@ public class NSDNettyManager {
if (!mNettyTcpClient.getConnectStatus()) {
mNettyTcpClient.connect();//连接服务器
} else {
- mNettyTcpClient.disconnect();
+ Logger.d(TAG, "Client is connected.");
}
}
diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/NettyTcpClient.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/NettyTcpClient.java
index 0d46b1b..8693a76 100644
--- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/NettyTcpClient.java
+++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/NettyTcpClient.java
@@ -146,7 +146,7 @@ public class NettyTcpClient {
.handler(new ChannelInitializer() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
- ch.pipeline().addLast(new ReconnectHandler(NettyTcpClient.this));
+ ch.pipeline().addLast(new ReconnectHandler(NettyTcpClient.this, mProxyListener));
if (isSendheartBeat) {
ch.pipeline().addLast("ping", new IdleStateHandler(0, heartBeatInterval, 0, TimeUnit.SECONDS));//5s未发送数据,回调userEventTriggered
}
@@ -190,6 +190,10 @@ public class NettyTcpClient {
ChannelFuture channelFuture;
try {
if (bootstrap != null) {
+ if (group == null || group.isShutdown()) {
+ group = new NioEventLoopGroup();
+ bootstrap.group(group);
+ }
channelFuture = bootstrap.connect(host, tcp_port);
channel = channelFuture.channel();
channelFuture.addListener(mFutureListener);
diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/handler/NettyClientHandler.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/handler/NettyClientHandler.java
index 47d8464..c0e36c2 100644
--- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/handler/NettyClientHandler.java
+++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/handler/NettyClientHandler.java
@@ -75,16 +75,6 @@ public class NettyClientHandler extends SimpleChannelInboundHandler客户端下线
- *
- * @param ctx ChannelHandlerContext
- */
- @Override
- public void channelInactive(ChannelHandlerContext ctx) {
- Logger.e(TAG, "channelInactive");
- }
-
/**
* 客户端收到消息
*
@@ -102,16 +92,4 @@ public class NettyClientHandler extends SimpleChannelInboundHandler?
+) : ChannelInboundHandlerAdapter() {
private val maxRetries = Int.MAX_VALUE
private var retries = 0
private val baseSleepTimeMs = 3000
private val maxSleepMs = 10 * 1000
- private val scheduledThreadPool by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
- Executors.newScheduledThreadPool(1)
- }
companion object {
private const val TAG = "ReconnectHandler"
@@ -32,14 +32,20 @@ class ReconnectHandler(private val mNettyClient: NettyTcpClient) : ChannelInboun
@Throws(Exception::class)
override fun exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable) {
- ctx.close()
Logger.e(TAG, "ReconnectHandler#exceptionCaught cause message is:${cause.message}")
+ listener?.onClientStatusConnectChanged(
+ ConnectState.STATUS_CONNECT_ERROR,
+ cause.message,
+ ctx.channel()
+ )
+ cause.printStackTrace()
+ ctx.close()
}
@Throws(Exception::class)
override fun channelInactive(ctx: ChannelHandlerContext) {
Logger.d(TAG, "ReconnectHandler channelInactive ...")
- // TODO:(策略暂时耦合在这里,后面使用策略模式)
+ listener?.onClientStatusConnectChanged(STATUS_CONNECT_CLOSED, "channelInactive", ctx.channel())
var allowRetry = false
if (retries < maxRetries) {
allowRetry = true
@@ -55,8 +61,7 @@ class ReconnectHandler(private val mNettyClient: NettyTcpClient) : ChannelInboun
sleepTimeMs = maxSleepMs.toLong()
}
Logger.d(TAG, "${sleepTimeMs}ms后执行重连操作!")
- scheduledThreadPool.schedule({
- // 异步重连或单独线程池中同步重连,不要阻塞netty的io线程,同时也不要关闭EventLoopGroup
+ ctx.channel().eventLoop().schedule({
mNettyClient.reconnectServer()
}, sleepTimeMs, TimeUnit.MILLISECONDS)
++retries
diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/listener/NettyClientListener.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/listener/NettyClientListener.java
index 0057fe3..7a7e4c6 100644
--- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/listener/NettyClientListener.java
+++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/listener/NettyClientListener.java
@@ -18,7 +18,7 @@ public interface NettyClientListener {
/**
* 当服务状态发生变化时触发
* @param statusCode 状态变化
- * @param sign tcp 客户端的标识,因为一个应用程序可能有很多个长链接
+ * @param content
*/
- void onClientStatusConnectChanged(int statusCode, String sign, Channel channel);
+ void onClientStatusConnectChanged(int statusCode, String content, Channel channel);
}