默认
发表评论 3
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求助 RainbowChat 离线消息好友上线时收不到的问题
阅读(28624) | 评论(3 收藏 淘帖
目前android app 给离线好友发消息,离线好友上线是收不到的。

如果需要离线消息在需要在上线的时候调用 “ 【接口 1008-4-8】获取离线聊天消息的接口”获取离线消息才行吧?

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

上一篇:RainbowChat客户端建议:移动端用qt重写就完美了……下一篇:金山毒霸报的警告信息?
推荐方案
评论 3
RainbowChat收不到离线消息?没这种可能性啊
你RainbowChat是哪个版本?你有改动过代码吗?
引用:JackJiang 发表于 2018-02-23 19:25
RainbowChat收不到离线消息?没这种可能性啊
你RainbowChat是哪个版本?你有改动过代码吗?

找到问题了,是因为我配置了rainbowchat和app和web互通,把互通关闭就能收到离线消息了。
应该是配置了互通后判断用户是否在线这部分代码需要修改下吧
引用:messi123 发表于 2018-02-24 15:24
找到问题了,是因为我配置了rainbowchat和app和web互通,把互通关闭就能收到离线消息了。
应该是配置了 ...

是的,你的问题最大可能就是Web版聊天服务端那边还没有把离线消息处理做好而导致的。

记住一个关键技术点:
RainbowChat的底层通信是基于MobileIMSDK框架,而MobileIMSDKMobileIMSDK-Web的互通,理论上是应该有一个集中式的用户列表来维护(比如用独立的redis服务),但这样就会把架构搞复杂,而且在目前的架构下这样做性能上也不会有什么好处。

所以MobileIMSDK和MobileIMSDK-Web的互通,目前的技术实现是:当MobileIMSDK发现好友不在APP这边的好友列表时(因为Web和APP两边的用户列表没有统一用一个,各自用自已的在线列表),那么就尝试作为互通消息发给Web那边(因为好友不在APP这边在线,那就尝试看看是不是在Web那边在线),如果Web那边还不在线,就直接由Web来作为离线消息存储起来。

总之:目前这个逻辑的实现目的是希望以最小的架构复杂性来实现Web和APP的互通,经过权衡所以就这样实现了,从性能上来说不会有什么影响,因为不是我自已存离线,就是你(Web那边)存离线,道理一样,而好处不是不用为整个架构加一个Redis这样的中间层来管理和同步好友的在线状态(不要小看这用户状态在分布式情况下的同步问题,在极端情况:比如这台redis宕机后恢复、某台IM实例宕机后恢复,这些情况下似曾相识证好友状态的准确性是非常复杂的)。

所以:如果你没有理解我回复的这个逻辑原理,你自已体会一下,如果你自已来互通,你会怎么做?这样就很容易明白了!
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部