|
@@ -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);
|
|
|
- }
|
|
|
- }
|
|
|
}
|