断线重连机制
[java] view plain copy
/**
* 断线重连机制
* Created by fflin on /5/8.
*/
public class ReconnectionThread extends Thread {
private LoginService loginService;
private int reconnectCount;
public ReconnectionThread(LoginService service) {
this.loginService = service;
this.reconnectCount = 0;
}
@Override
public void run() {
try {
while (!isInterrupted()) {
L.e("asker", "@@ 正在断线重连 " + waitingTime()
+ " seconds" + "; UrlConstant.jaxmpp.isConnected() :" +
UrlConstant.jaxmpp.isConnected()
+ "; isInterrupted() :" + isInterrupted());
Thread.sleep((long) waitingTime() * 1000l);
if (!UrlConstant.jaxmpp.isConnected()){
loginService.Login(); //重新登陆聊天服务器
reconnectCount++;
}else{
currentThread().interrupt(); //登陆成功阻塞当前线程
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private int waitingTime() {
if (reconnectCount > 20) {
return 600;
}
if (reconnectCount > 13) {
return 300;
}
return reconnectCount <= 7 ? 5 : 60;
}
}
如果觉得《tcp 重连 java TCP断线重连机制》对你有帮助,请点赞、收藏,并留下你的观点哦!