默认
发表评论 9
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
理论上,只要你发送时,指明QoS参数为true(即表示需要QoS机制),则每条消息都会由SDK底层自动实现消息的应答。你说的有收能收到应答,有时收不到,理论上不可能。

你可以在gitee上把源码下载下来,在源码的基础上边调试,边观察,这样更具体一点。

MobileIMSDK的QoS的原理就是:

  • 1)你发出一条消息后,此消息会自动进入到 QoS发送保证队列,代码实现是 QoS4SendDaemon.java
  • 2)对方收到消息后,会由发送应答包;
  • 3)发者者收到应答包后,会在QoS接收机制中移除这条消息(在第1)步中加入的),代码实现是 QoS4ReciveDaemon.java
  • 4)当第3)步没有发生,也就是发送者没有收到接收者发过来的应答包时,第1)步中的QoS列队,会自动计算机这条消息在超时时间内没有收到应答包,并决定进行重传(进入重传逻辑)。

以上就是QoS机制的大致原理,你可以按我说的,去读一下或调试一下代码。代码是很精确的,该是怎么样就是怎么样,有时能有时又不能,那一定是有别的原因,你可以深究一下。

你在研究的过程中,如果遇到任何技术疑问,你就在就在这个帖子里回复,有必要的话就新开一贴,我看到后会及时详细帮你分析。
评论 9
引用:hlf520 发表于 2021-06-03 10:29
根据您的建议我会调试下

嗯,有情况及时在帖子里讨论
引用:hlf520 发表于 2021-06-03 10:24
这是我发送消息Qos true

p = ProtocalFactory.createCommonData(message.toString(), from_user_id, t ...

你这日志是用什么工具抓取的,很实用啊
引用:hlf520 发表于 2021-06-05 11:42
线上,线下分别做了测试
结论:Qos机制没有问题,是我拿到消息后处理的问题(在操作数据库执行方法是不 ...

好的,明白了。后面再遇到别的技术问题,直接开贴即可
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部