默认
发表评论 10
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
关求教于IM中私聊ACK应答包,如何保证绝对可靠性的问题
阅读(35074) | 评论(10 收藏 淘帖
场景:
用户A向用户B 发送一条消息,消息经过服务器S做转发

1.当A的消息到达服务器S之后,S直接返回ACK给A ,表示消息已经成功发出(完全相信服务器的消息重发,有消息丢失的风险,而且A不知道消息已经丢失了)

2.A发送消息到达服务器S之后,服务器把消息发送给B并且收到B回复的ACK之后,再给A回复ACK(ACk丢失几率增多,用户体验查)

以上的问题有没有好的解决办法

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

标签:求助 IM开发
上一篇:安卓端 netty怎么支持open ssl,求救~~~下一篇:请教IM系统中群聊需要如何优化,才能应对分布式的架构
推荐方案
评论 10
第二步中,“再给A回复ACK”这是服务端再给A回复的?
引用:JackJiang 发表于 2021-05-12 21:06
第二步中,“再给A回复ACK”这是服务端再给A回复的?

嗯嗯是的
引用:JackJiang 发表于 2021-05-12 21:06
第二步中,“再给A回复ACK”这是服务端再给A回复的?

B给服务端回复了ACK,服务端再给A回复ACK,这样一条消息才算成功到达
第二步,在什么情况下ACK会丢失?S转发到B之后,B还没回复,网络挂了?
引用:csj 发表于 2021-05-13 09:12
B给服务端回复了ACK,服务端再给A回复ACK,这样一条消息才算成功到达

在A发消息服务端中转时,服务端已经回过ack给A了,B收到后,服务端也就不需要再给A回ack了,否则那也逻辑就复杂了
引用:mml 发表于 2021-05-13 09:39
第二步,在什么情况下ACK会丢失?S转发到B之后,B还没回复,网络挂了?

是的,比如说B收到消息正准备给S回复ACK,突然手机炸了,导致S没有收到B的ACK,也有可能服务器机房起火,导致丢失ACK
引用:JackJiang 发表于 2021-05-13 14:56
在A发消息服务端中转时,服务端已经回过ack给A了,B收到后,服务端也就不需要再给A回ack了,否则那也逻辑 ...

明白了,多谢大佬,服务端做消息重传
引用:csj 发表于 2021-05-13 16:46
明白了,多谢大佬,服务端做消息重传

嗯 尽量别把逻辑搞复杂,否则会多很多麻烦。im这种东西是允许万有一失的,非要做到百分百,代价太大了,不值当
引用:JackJiang 发表于 2021-05-13 17:46
嗯 尽量别把逻辑搞复杂,否则会多很多麻烦。im这种东西是允许万有一失的,非要做到百分百,代价太大了, ...

嗯嗯 多谢大佬解惑,受教了
好文章,谢谢分享
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部