默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
理论上不会发生这种情况,MobileIMSDK的客户端QoS送达保证队列算法原理非常简单:
该队列会保存你最近几分钟内发出的消息,只要没有收到对方的应答,这条消处就会重复重发直到超时(通过回调通知你已经lost了)。
所以,你怀疑的问题可以在客户端定位,跟对方或服务端都不会有关联。
你的log打印的不够全面,你按照我说的步骤来做。。。

打开客户端的debug选择:
[ClientCoreSDK setENABLED_DEBUG:YES];   然后把客户的详细log抓出来。

有一点要注意:
实际生产情况下,服务端挂掉属于非常严重的事故,出现的几率少之又少。

不过,我建议你可以仔细看一下MobileIMSDK的算法:
当客户端判定与服务端的网络已断开时,它会将这个重传定时器给关掉,直到下次连接上服务器上再次启动(也就是重传将在下次连接上服务器后继续进行,而不是武断地直接抛出lost回调)。这种方式是考虑到服务端断开的情况属于比较严重的体验危机,所以MobileIMSDK为了防止误判(比如只是偶尔的网络抖动、干扰等),把重传的机会留给了下次重连成功后。

我估计你看到的问题是上面的算法逻辑的结果,我建议你读读代码后再来看,时论上这个队列里的消息不可能无故消失,因为它足够简单,也就理所当然能保证:它要么还在队列里(只是暂停了计时—)、要么已经抛出。就是这样的。
评论 4
另外再多问一句,你的MobileIMSDK版本是多少?
引用:cloverxie 发表于 2018-03-07 13:36
最新的3.0版本

最新版本是v3.2,你先升级一下版本后,再来抓log
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部