默认
发表评论 10
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
如何保证即时通讯聊天里消息唯一,后台丢包不重复处理
阅读(58182) | 评论(10 收藏 淘帖1
我说的消息唯一性,是指同一条消息不会被后台处理多次。
比如MobileIMSDK,是基于UDP的,手机向后台发送消息后,后台需要向手机发送回执。由于UDP是不可靠的,有可能后台向手机发送的回执,手机没有收到,于是手机又再次把同一条消息发送给后台。这时候,后台其实是两次接收和处理了同一条消息。
请问这种情况如何处理?
有没有可能在手机端解决这个问题,还是只能在后台解决?

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

标签:即时通讯
上一篇:android如何做到未启动App也能收到别人的推送消息,求大神指点...下一篇:求教:修改了环信的iOS版Demo的导航栏后挡住了下面的内容

本帖已收录至以下技术专辑

推荐方案
评论 10
引用:JackJiang 发表于 2016-06-24 09:50
你所说的重复处理,就是重传了。我以前跟手Q团队的人交流过,重传在主流IM里很正常,至于怎么重传,这就是 ...

你的意思,是不是说:
1、重传无法避免,即客户端收不到服务端回执的情况是存在的。所以会产生用户只发送一条消息,结果其他人收到2条的情况。
2、服务端不对重传的消息做过滤,仍然还是正常做投递。
3、通过优化客户端的重传策略,降低重传的概率
签名: 该会员没有填写今日想说内容.
引用:JackJiang 发表于 2016-06-24 10:01
1)客户端收不到回执的可能性理论上也同样存在(你概率已经越来越小了),但对方收到重复消息在MobileIMS ...

关于MobileIMSDK在接收方做的处理,我曾经在Q群见你提起过,大致思路就是:客户端做一个短队列,记录比如10条以内的消息,当收到新消息时,判断是否与这10条相同,如果相同就丢弃。
根据这一思路来,能否这样做:
客户端发送消息时,对消息生成UUID,然后一起发送给服务端。服务端对客户端生成的UUID不做处理,直接发送给接收方,接收方根据UUID来做过滤。
这样一来,消息体会不会太臃肿?
签名: 该会员没有填写今日想说内容.
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部