默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 关于MobileIMSDK的iOS版收到消息应答回调的疑问
阅读(40856) | 评论(4 收藏 淘帖1
oc 里的那个消息回调回来的指纹码怎么获取的??看源代码里的..怎么是在dataContent里获取..不是从发送里设的fp??没看明白

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

标签:MobileIMSDK
上一篇:IM客户端匿名登陆后再想正式登陆,服务端能否做到不需要客户端重新建新socket连接下一篇:我的IM在线列表用户的切换导致出现短暂的连接失败

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

推荐方案
评论 4
请截图或贴代码,你这样说,我想像不出来你要说的是什么具体情况
引用:JackJiang 发表于 2017-09-08 12:45
请截图或贴代码,你这样说,我想像不出来你要说的是什么具体情况
case FROM_CLIENT_TYPE_OF_RECIVED:
        {
            NSString *theFingerPrint = pFromServer.dataContent;
            if([ClientCoreSDK isENABLED_DEBUG])
                NSLog(@"【IMCORE】【QoS】收到%@发过来的指纹为%@的应答包.", pFromServer.from, theFingerPrint);
            
            if([ClientCoreSDK sharedInstance].messageQoSEvent != nil)
                [[ClientCoreSDK sharedInstance].messageQoSEvent messagesBeReceived:theFingerPrint];
            
            [[ProtocalQoS4SendProvider sharedInstance] remove:theFingerPrint];
            
            break;
        }

就是这个接收到消息回调这里
大概看懂了..只是不明白..当对方不在线,发送消息,由服务器返回来的消息回调却没有指纹码..而是原来的datacontent。。这个问题是不是出在服务器端..但是安卓的去又是可以拿到指纹码..这让我好纳闷
引用:Liu90 发表于 2017-09-08 14:28
大概看懂了..只是不明白..当对方不在线,发送消息,由服务器返回来的消息回调却没有指纹码..而是原来的datac ...

你的理解还需要深入一点,如果你有精篇注释版的话,可以对着那张算法图来看看。其实这个回调里收到的这个消息包是应答包,应答包的作用是告诉发送方:刚才的消息包(假设刚发出的消息的指纹码为A)已经收到了,那你回答我一个问题,这个回过来的应答包该该如何告诉发送方刚才的消息的指纹码是什么呢?

另外,应答包本身是不需要QoS机制的(这个比较特殊),因为应答包如果中途丢掉了,发送方会认为接收方没有收到刚才的消息,而会尝试重传,几次重传的情况下如果应答仍收不到,发送方这边就报messageLost(从另一个回调里出来)。所以,应答包本身不需要QoS机制,否则就容易发生死循环了,你理解一下。。。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部