默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MobileIMSDK Android端,连接断开后重连问题请教
我这边用的是v3.3.1版jar包,登录成功后,如果是自己断开网络或者切换网络类型,马上就可以自动重新连接上,但是运行一段时间后会概率性断开,大概三五个小时就会断开一次,errorCode 是 -1,然后就再也重连不上了,需要把app杀掉再打开,就又可以顺利登陆上。
大致的log如下:

Line 2764635: 11-09 03:00:03.218 D/QoS4SendDaemon(15196): 【IMCORE】【QoS】=========== 消息发送质量保证线程运行中, 当前需要处理的列表长度为0...
Line 2770677: 11-09 03:00:05.210 D/KeepAliveDaemon(15196): 【IMCORE】心跳线程执行中...
Line 2774952: 11-09 03:00:08.227 D/KeepAliveDaemon(15196): 【IMCORE】心跳线程执行中...
Line 2774953: 11-09 03:00:08.233 D/QoS4SendDaemon(15196): 【IMCORE】【QoS】=========== 消息发送质量保证线程运行中, 当前需要处理的列表长度为0...
Line 2775417: 11-09 03:00:11.233 D/KeepAliveDaemon(15196): 【IMCORE】心跳线程执行中...
Line 2775420: 11-09 03:00:11.247 D/AutoReLoginDaemon(15196): 【IMCORE】自动重新登陆线程执行中, autoReLogin?true...
Line 2775421: 11-09 03:00:11.261 D/LocalUDPDataReciever(15196): 【IMCORE】本地UDP端口侦听中,端口=7801...
Line 2775730: 11-09 03:00:13.235 D/QoS4SendDaemon(15196): 【IMCORE】【QoS】=========== 消息发送质量保证线程运行中, 当前需要处理的列表长度为0...
Line 2775731: 11-09 03:00:13.263 D/AutoReLoginDaemon(15196): 【IMCORE】自动重新登陆线程执行中, autoReLogin?true...
Line 2775732: 11-09 03:00:13.272 D/LocalUDPDataReciever(15196): 【IMCORE】本地UDP端口侦听中,端口=7801...
Line 2776041: 11-09 03:00:15.273 D/AutoReLoginDaemon(15196): 【IMCORE】自动重新登陆线程执行中, autoReLogin?true...
Line 2776046: 11-09 03:00:15.295 D/LocalUDPDataReciever(15196): 【IMCORE】本地UDP端口侦听中,端口=7801...


大段的重复log,就不全部贴上来了,请问这种情况是否已经有解决方案?谢谢。

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:[已回复] 关于MobileIMSDK的ios端是否支持swift下一篇:[已解决] 开启桥接,Web到APP的消息会隔一个掉一个(APP没收到,但web端显示发成功)
推荐方案
评论 5
这个问题就很奇怪了,你的手机是什么品牌?什么型号?android版本是多少?
还有没有其它价值log?你注意一下上下文中有没有异常的栈信息。现在看不出来什么
引用:JackJiang 发表于 2018-11-09 15:01
这个问题就很奇怪了,你的手机是什么品牌?什么型号?android版本是多少?
还有没有其它价值log?你注意一 ...

你好,版本是Android 7.1.2,暂时没有其他有用的log
网络抖动导致断开其实很正常,比较奇怪的是自动重连无法成功,重启app之后又可以顺利登陆成功,是否可以使用release()然后再重新初始化的方式来规避这个问题?
引用:亚历山大 发表于 2018-11-09 18:38
你好,版本是Android 7.1.2,暂时没有其他有用的log
网络抖动导致断开其实很正常,比较奇怪的是自动重连 ...

自动重连线程还是活着的吧?只是在这种情况下每次网络重试都不能成功发出是吗?

这种情况下,你想办法在这台手机做实验,也就是出现这种情况时,让它强制将LocalSocketProvider的socket close掉再试(close掉后,再用的时候会自动重建一个新的,这个close方法LocalSocketProvider有提供,你看看源码)。看看能不能恢复正常。

因为andriod手机的系统千奇百怪,各种省电策略(包括网络节流、节电等),很难预测,你在这台手机上多做实验,试试看,有进展了及时反馈给我
抱歉,有段时间没回复,回家照顾病人,这两天才有空试了一下,使用
LocalUDPSocketProvider.getInstance().closeLocalUDPSocket();
来重置状态,的确可以再次登录成功,这几天再做几次压力测试看看,有进展会第一时间汇报
昨天又长时间测试两次,出现无法连接上的时候通过调用closeLocalUDPSocket()之后可以有效地再次登录成功,此问题应该已经解决,非常感谢
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部