Browse Source

tcp连接断开后重试多次未连接则重启app

weizhengliang 3 years ago
parent
commit
3b7e4b98a9

+ 6 - 2
callingbed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -931,6 +931,10 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
                 updateTcpState()
             }
 
+            Constant.EVENT_RESTART_APP -> {
+                AppUpdateHelper.restartApp(activity)
+            }
+
             //TCP消息处理
             Constant.EVENT_TCP_MSG -> {
                 if (messageEvent.message is TcpModel) {
@@ -1142,9 +1146,9 @@ class CallingbedActivity :BaseActivity<CallingbedActivityPresenter, CallingbedMa
             } else if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) {
                 updateNetState()
                 if (initialized && NetHelper.getInstance().networkAvailable()) {
-                    if (!Constant.TCP_CONNECTED) {
+                    /*if (!Constant.TCP_CONNECTED) {
                         TcpClient.getInstance().doConnect()
-                    }
+                    }*/
                     if (SocketManager.getInstance().userState == 0) {
                         //如果socket断开了则重连
                         connectRtcWebSocket()

+ 2 - 2
callingbed/src/main/res/layout/view_title_layout.xml

@@ -32,8 +32,8 @@
         android:layout_height="wrap_content"
         android:layout_centerHorizontal="true"
         android:layout_centerVertical="true"
-        android:format12Hour="yyyy-MM-dd HH:mm:ss EEEE"
-        android:format24Hour="yyyy-MM-dd HH:mm:ss EEEE"
+        android:format12Hour="yyyy-MM-dd HH:mm EEEE"
+        android:format24Hour="yyyy-MM-dd HH:mm EEEE"
         android:timeZone="GMT+8"
         android:textColor="@color/main_color"
         android:textSize="@dimen/font_size_20" />

+ 2 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java

@@ -175,4 +175,6 @@ public class Constant {
      * 呼叫消息
      */
     public static final int EVENT_CALL_MSG = 0x11;
+
+    public static final int EVENT_RESTART_APP = 0x12;
 }

+ 10 - 35
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClient.java

@@ -40,6 +40,7 @@ public class TcpClient {
     private Integer retrySeconds = 5;
     //重试计数
     private Integer retryTimes = 1;
+    private Integer reconnetTimes = 0;
     //tcp是否完成初始化
     private boolean inited = false;
 
@@ -114,20 +115,25 @@ public class TcpClient {
                         @Override
                         public void run() {
                             retryTimes++;
-                            if (retryTimes > 20) { //重试30次还没连成功,等10分钟后再试
+                            if (retryTimes > 30) { //重试30次还没连成功,等10分钟后再试
 //                                System.out.println("TcpClient 重试" + (retryTimes - 1) + "次,结束");
 //                                channel.close();
 //                                workGroup.shutdownGracefully();
 //                                //todo: 从API获取新的serverIP和serverPort,全新连接
 //                                TcpClient.getInstance().init(Constant.TCP_SERVER_URL, Constant.TCP_PORT, Constant.TCP_HEART_BEAT);
                                 retryTimes=1;
+                                reconnetTimes++;
                                 channelFuture.channel().eventLoop().schedule(new Runnable() {
                                     @Override
                                     public void run() {
-                                        System.out.println("TcpClientHandler 重新连接,第" + retryTimes + "次");
-                                        doConnect();
+                                        System.out.println("TcpClientHandler 重新连接,第" + retryTimes + "次" + ", 重试" + reconnetTimes + "次");
+                                        if (reconnetTimes > 2) {
+                                            EventBus.getDefault().post(new MessageEvent(0, Constant.EVENT_RESTART_APP));
+                                        } else {
+                                            doConnect();
+                                        }
                                     }
-                                }, 60*10, TimeUnit.SECONDS);
+                                }, 60*5, TimeUnit.SECONDS);
 
                             }else{
                                 doConnect();
@@ -138,19 +144,6 @@ public class TcpClient {
                 }
             }
         });
-//        try {
-//            future.sync();
-//            future.channel().closeFuture().sync();
-//        } catch (InterruptedException e) {
-//            e.printStackTrace();
-//        } finally {
-            //重试之前不关
-//            try {
-//                Thread.sleep(retrySeconds * retryTimes*1000 + 1000);
-//            } catch (InterruptedException e) {
-//            }
-//            workGroup.shutdownGracefully();
-//        }
     }
 
     //发送消息,线程安全
@@ -164,22 +157,4 @@ public class TcpClient {
     public Channel getChannel() {
         return channel;
     }
-
-    //测试
-    public static void main(String[] args) {
-
-        new Thread(new Runnable() {
-            @Override
-            public void run() {
-                TcpClient.getInstance().init("47.106.200.55",5080, 9);
-            }
-        }).start();
-
-        Scanner scanner = new Scanner(System.in);
-        while (true){
-            System.out.println("please type : ");
-            String line = scanner.nextLine();
-            TcpClient.getInstance().sendMsg(line);
-        }
-    }
 }