安卓IM聊天,动态心跳机制实现
if (client.isClosed()) {
reconnectWs();
infoAlarm = infoAlarm + "__" + "client.isClosed()|reconnectWs重新连接";
if (reTryHeardMisTimeCount < 2){
//((WechatApplication)getApplication()).ONE_MINUTE = lastHeardMisTime;
reTryHeardMisTimeCount++;
}else {
//连续三次心跳失败,心跳间隔缩短
boolean isHaseNet = ping();
if (isHaseNet) {
((WechatApplication) getApplication()).ONE_MINUTE = ((HeardMisTime - 3 * addHeardMis) > 3 ? (HeardMisTime - 3 * addHeardMis) : 3) * 1000;
}else {
//没有网,间隔时间长
((WechatApplication) getApplication()).ONE_MINUTE = 10 * 60 * 1000;
}
lowShotTimes = true;
}
Log.i(TAG,"client.isClosed()关闭,重新连接");
}else {
sendHeardMsg();
if (nomolSuccessHeardMisTime != 0 && lowShotTimes == false){
//已经存在探测过的时间
((WechatApplication) getApplication()).ONE_MINUTE = nomolSuccessHeardMisTime;
}else {
if (lowShotTimes == true && lowSuccessCounts < 3) {
if (lowSuccessCounts < 3) {
lowSuccessCounts++;
} else {
nomolSuccessHeardMisTime = ((WechatApplication) getApplication()).ONE_MINUTE;
lowShotTimes = false;
lowSuccessCounts = 0;
PreferencesUtil.getInstance().setSuccessHeardMisTime(nomolSuccessHeardMisTime);
}
} else {
((WechatApplication) getApplication()).ONE_MINUTE = (HeardMisTime + addHeardMis) * 1000;
lastHeardMisTime = ((WechatApplication) getApplication()).ONE_MINUTE;
reTryHeardMisTimeCount = 0;
}
}
infoAlarm = infoAlarm + "__" + "client != null|client连接正常";
}