默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 服务端sendOK为true,Android IOS端概率性丢包,收到消息不一致
丢包情况下服务端未收到应答包,消息确实已发出,因为两个端概率性收到消息不一致,并且存在丢包情况,客户端丢包前,收到的消息是乱序的。并且丢包时没走伪应答回调。[IMCORE<C2C>]>> 发送给客户端18的通用数据2d863248-dc30-4eef-a9c7-dec479c9f03e实时发送成功
但是客户端没收到2d863248-dc30-4eef-a9c7-dec479c9f03e的消息,没发ack应答包。



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

标签:MobileIMSDK
上一篇:[已回复] MobileIMSDK的iOS端在网络不通时发送消息也会返回0 成功?下一篇:[已回复] 当MobileIMSDK的客户端收不到对方的ACK应答包时会发生什么?
推荐方案
评论 5
你这log相当乱,看的头晕。

但我有几个建议给你。。。

1)同一个群的消息乱序的问题:你可以自已实现一个消费者生产者模型(简单说就是写个简化的队列就好了),这样就能保证顺序了。否则,通常的服务端框架,为了高性能,无论从网络发送、还是线程调度,肯定都是异步、多线程实现的,这是跟客户端编程的最大差别。所以,你在你自已写个简单的队列,相当于在应用层为系统的消息分发排好序了,而不是扔给它让他们自已异步群魔乱舞,系统以为只要高效地发出去就好了。

2)我有看到你发送消息时,不在线的人你也尝试发送:虽然这不会有问题,因为对方不在线框架会自动交给离线处于代码。但这会让你的log看起来比较冗余,不利于调试(这也是为什么你的log看起来这么乱的原因),你完全可以在发送之前就判断一下对方在不在线——你自已决定是实时发送、还是马上就交给离线处理代码,判断对方在不在线的API,你看看OnlineProcessor的API接口就能用了。
引用:JackJiang 发表于 2018-03-02 10:54
你这log相当乱,看的头晕。

但我有几个建议给你。。。

这两个问题先不说,丢包时什么问题
引用:天然呆 发表于 2018-03-02 11:00
这两个问题先不说,丢包时什么问题

你的log太乱了,整理个清爽一点的抓出来分析一下。

另外,建议你评估一下你的服务端与手机间的网络质量:比如你可以用ping工具在服务器上持续ping这台手机(下载地址:http://www.52im.net/thread-610-1-1.html),然后根据网络状况来从理论上评判丢包是否正常,然后再来看看为何框架中丢包的容错处理逻辑是否合理。

网络通信程序,一定是对着网络质量来分析才有意义:
[已回复] 服务端sendOK为true,Android IOS端概率性丢包,收到消息不一致_232721imvwem14r1vqp1ef.png
引用:JackJiang 发表于 2018-03-02 11:03
你的log太乱了,整理个清爽一点的抓出来分析一下。

另外,建议你评估一下你的服务端与手机间的网络质 ...

这样正常吗?

QQ图片20180302113735.png (41.05 KB, 下载次数: 2584)

QQ图片20180302113735.png
引用:天然呆 发表于 2018-03-02 11:38
这样正常吗?

网络还可以,不能算差。

你把服务端日志都清空,然后整一个清爽点的log出来对照着网络质量分析分析
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部