请选择 进入手机版 | 继续访问电脑版

默认
发表评论 6
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] MessageQoSEventImpl messagesLost回调函数 不太懂怎么使用
MessageQoSEventImpl messagesLost回调函数

这个回调函数 我没有看懂。
在什么情况 下需要 使用到这个函数?
qos的重传机制  和 lostMessages 集合 有关系吗?
当qos重传次数超过指定次数时,lostMessages集合会被清空吗?
在什么情况 下需要 使用到这个函数?

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

标签:MobileIMSDK
lostMessages.png
上一篇:[已回复] 请教MobileIMSDK一对多群发、一对一单发消息的实现下一篇:[已回复] 求教MobileIMSDK 服务器端的在线用户列表最好的实现方式有哪些?

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

推荐方案
评论 6
先不说技术,我们来说说一个移动端IM的应用层表现,以手机QQ为例

假设此时你的手机正打开qq,也连着WiFi,注意此时WiFi是好的,但恰好你家的宽带猫网络出了问题,上不了网。因为此时手机只知道连接着的网络没有断开(因为WiFi信号是好的),但它并不知道WiFi路由器到运营商的这条通路已经不能连通上。

你恰在此时尝时用手机QQ向某好友发送消息,过一会那条消息边上出出现一个红色的小图标,就像下图这样:
a044ad345982b2b7f3da466533adcbef77099bcd.jpg

MobileIMSDK的这个MessageQoSEventImpl.messagesLost(..)回调函数就是解决这个问题,它遇到上面手机QQ上消息发不出去时,就会通过这个回调告诉你刚才你发出的消息有几条是没有成功实时送达的,是否明白?
明白了
也就是说在重试规定的次数 仍然发不出去,就会把 没发出去的Protocal 告诉 用户。

我还想问下,如果发现有List<Protocal> 没有发出去 ,我就可以 在界面上展示出不能发送的标志,
之后如果用户在界面上点击重新发送,  我是否需要把未成功发送的Protocal 保存起来?
当用户点了哪个重新发送,我就再重新发送那个Protocal ?
是否需要生成新的Protocal 再发送?

感谢jack
引用:吴佳同 发表于 2017-09-27 17:15
明白了
也就是说在重试规定的次数 仍然发不出去,就会把 没发出去的Protocal 告诉 用户。

通常像手机qq、微信这样的IM,发送出去的消息会首先离线存储在本地的sqlite中,如果要重发根据消息id(就是MobileIMSDK里的fingerPrint指纹码)就可以拿到这个消息的数据。
也就是说重发的时候  框架是会自动生成一个新的Protocal对象,然后发送出去
可以这样理解吗?
神秘人  发表于 4 年前
想知道,这里MBObserver 发送失败是否会到messagesLost这里,打开qos,发现只有发送成功的到了,下面的messagesBeReceived函数,发送失败的,并未在messageLost收到,想确定下,是否为出现.以便于解决
神秘人  发表于 4 年前
想知道这里的MBOBserver 发送失败的会不会到messageLost 里面,打开qos,只发现发送成功的,收到了,qos的通知, MBOBserver 失败的,未在messageLost里面找到.
1111.png
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部