欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

融云IM SDK 4.0.0.3源码分析(IM服务器的连接)

程序员文章站 2022-07-13 15:37:06
...

小编最近下载了几个IM相关的代码做研究,整体感觉融云IM的demo架构比较好,使用的是MVVM架构,想学习的可以去下载看下
这里讲下比较关键的类

RongIMClient

这个类里有个接口比较重要,mLibHandler,基本上连接及消息相关的方法都是这个接口中定义的
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)

融云IM SDK 4.0.0.3源码分析(IM服务器的连接)可以看到这个mLibHandler接口表面上的赋值是在服务连接成功的回调方法onServiceConnected中实现的,了解Service的原理的话(不懂得话可以去了解下绑定Service的用法),可以想到mLibHandler最终的赋值是在AidlConnection对象所绑定的服务中的onBind方法中实现的,
看下bindService方法的参数,其中Intent可以知道具体的Service,conn就是AidlConnection对象

bindService(@RequiresPermission Intent service,
            @NonNull ServiceConnection conn, @BindServiceFlags int flags)

看下mAidlConnection赋值的地方
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
服务绑定的地方
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
即mLibHandler的最终实现是在RongService中的onBind方法内
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)

RongIMClient中 IM连接服务器的方法
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
知道了mLibHandler的实现类是LibHandlerStub就好多了,可以看下这个类中的connect方法
在这里插入图片描述
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
最终连接IM服务的地方是
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
最终服务的连接是调用的native方法,无法往下跟了,就到这里。
可以看到融云IM中连接是用的一个普通的Service做的

2020年09月03日 21:06 ylxy

相关标签: 即时通讯