默认
发表评论 3
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
关于MobileIMSDK如何保证数据有序性的问题。
阅读(38649) | 评论(3 收藏1 淘帖
你好,有个关于发送包有序性的问题。
假如Client A 给 Client B 按顺序 发送两个数据包a和b,它们的发送遇到的情况如下:
1.数据包a在 Client A 到 Client B 传输过程中就发送失败了(所以Client A 肯定也不会收到a的应答包)
2.数据包b发送成功
3.数据包a重传,这次成功了

那么如果是这样的话Client B 依次收到的包为b、a,而我们希望的是Client B收到的包依次为a、b。

还有另外一种情况是a、b包都发送成功了,但因为a传输的延时比较大,导致Client B先收到b,之后才收到a。

请问MobileIMSDK在数据有序性上是如何保证的呢?

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

标签:MobileIMSDK
上一篇:[已解决] MobileIMSDK server和java版Demo死机的问题下一篇:[已解决] MobileIMSDK的Android客户端如何重新登录服务器???
推荐方案
评论 3
我晚上来回复你
处理时序,势必会让事情复杂化而降低性能,MobileIMSDK在底层选择不处理这个问题。

时序问题是所有IM系统都要面临的问题,要绝对保证时序,那差不多是得在服务端做文章,则性能肯定是会大大降低,《如何保证IM实时消息的“时序性”与“一致性”?》这篇文章里探讨了几种可能性,你可以看看。

理论归理论,但IM实际上是给“人”用的,从现实角度来看:时序只在跟某个人聊天时需要关注(即时序的影响范围只对应某个“个体”),一个简单的方法可以让消息发出时带上发送者手机的时间戳,这个时间戳跟服务器的不一致也无所谓,因为只要接收此人消息的时候用这个时间戳作为“时序”就行了,当真正发生乱序时,用什么策略利用好这个“时序”来提升用户体验,那就需要开发者从用户体验的角度来想办法了。

IM消息不是电商的交易数据,从价值上来讲,都是低价值信息,所以在极端情况下,允许“万有一失”,QQ和微信也都是这样的原则。
引用:JackJiang 发表于 2017-03-03 21:15
处理时序,势必会让事情复杂化而降低性能,MobileIMSDK在底层选择不处理这个问题。

时序问题是所有IM系 ...

学习了
签名: 星期六,那又怎样,还是得上班
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部