默认

[已回复] MessageQoSEventImpl messagesLost回调函数 不太懂怎么使用

查看数: 40962 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-09-27 15:23

正文摘要:

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

评论

游客 发表于 4 年前
想知道这里的MBOBserver 发送失败的会不会到messageLost 里面,打开qos,只发现发送成功的,收到了,qos的通知, MBOBserver 失败的,未在messageLost里面找到.

1111.png (36.59 KB, 下载次数: 1774)

1111.png
游客 发表于 4 年前
想知道,这里MBObserver 发送失败是否会到messagesLost这里,打开qos,发现只有发送成功的到了,下面的messagesBeReceived函数,发送失败的,并未在messageLost收到,想确定下,是否为出现.以便于解决
吴佳同 发表于 6 年前
也就是说重发的时候  框架是会自动生成一个新的Protocal对象,然后发送出去
可以这样理解吗?
JackJiang 发表于 6 年前
引用:吴佳同 发表于 2017-09-27 17:15
明白了
也就是说在重试规定的次数 仍然发不出去,就会把 没发出去的Protocal 告诉 用户。

通常像手机qq、微信这样的IM,发送出去的消息会首先离线存储在本地的sqlite中,如果要重发根据消息id(就是MobileIMSDK里的fingerPrint指纹码)就可以拿到这个消息的数据。
吴佳同 发表于 6 年前
明白了
也就是说在重试规定的次数 仍然发不出去,就会把 没发出去的Protocal 告诉 用户。

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

感谢jack
JackJiang 发表于 6 年前
先不说技术,我们来说说一个移动端IM的应用层表现,以手机QQ为例

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

你恰在此时尝时用手机QQ向某好友发送消息,过一会那条消息边上出出现一个红色的小图标,就像下图这样:
[已回复] MessageQoSEventImpl messagesLost回调函数 不太懂怎么使用_a044ad345982b2b7f3da466533adcbef77099bcd.jpg

MobileIMSDK的这个MessageQoSEventImpl.messagesLost(..)回调函数就是解决这个问题,它遇到上面手机QQ上消息发不出去时,就会通过这个回调告诉你刚才你发出的消息有几条是没有成功实时送达的,是否明白?

返回顶部