默认
发表评论 25
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
每一个消息要有ID,然后消息有回执,就不会发生重发的情况了。

TCP本身是有重发,但是网络总是很复杂的,需要再加重发来提高消息成功率。
一个用户,给另一个用户,发任何信息,都会保存一个本地自增ID。发信息时,把该ID也发过去。

对方检查该ID是否连续就可以保证不乱序,不丢失。
引用:harrytang 发表于 2016-05-03 21:49
这种一般倾向于不解决,这种重复的几率很小,就算重复了在聊天场景下一般也没什么问题。非得用技术手段,只 ...

成熟是别人的,不可控,不可靠。
这种一般倾向于不解决,这种重复的几率很小,就算重复了在聊天场景下一般也没什么问题。非得用技术手段,只存最近一条消息的id是可以的,当然也可以算最近发送消息的哈希值,如果客户端不能保证id不变的话。
PS:现在即时通讯云市场辣么成熟都成红海了,还几乎免费,为啥还要养团队自己搞?
做法一: 上层做重发,例如可以失败后第一次10秒重发,再失败30秒,再失败60秒,再失败提示用户。
做法二: 失败直接提示用户,让用户主动去重发。
无论哪种做法,只是产品设计的不同,都需要做去重处理,每个客户端要维护一个自增长id,服务器只保存收到的最后一条消息的id,客户端再来消息后,只需要判断来自客户端的id是否大于服务器保存的这个就可以。

评分

1

查看评分

打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部