默认
发表评论 3
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
RainbowChat收不到离线消息?没这种可能性啊
你RainbowChat是哪个版本?你有改动过代码吗?
评论 3
引用: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实例宕机后恢复,这些情况下似曾相识证好友状态的准确性是非常复杂的)。

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

返回顶部