融云IM SDK 4.0.0.3源码分析(IM服务器的连接)
程序员文章站
2022-07-13 15:37:06
...
小编最近下载了几个IM相关的代码做研究,整体感觉融云IM的demo架构比较好,使用的是MVVM架构,想学习的可以去下载看下
这里讲下比较关键的类
RongIMClient
这个类里有个接口比较重要,mLibHandler,基本上连接及消息相关的方法都是这个接口中定义的
可以看到这个mLibHandler接口表面上的赋值是在服务连接成功的回调方法onServiceConnected中实现的,了解Service的原理的话(不懂得话可以去了解下绑定Service的用法),可以想到mLibHandler最终的赋值是在AidlConnection对象所绑定的服务中的onBind方法中实现的,
看下bindService方法的参数,其中Intent可以知道具体的Service,conn就是AidlConnection对象
bindService(@RequiresPermission Intent service,
@NonNull ServiceConnection conn, @BindServiceFlags int flags)
看下mAidlConnection赋值的地方
服务绑定的地方
即mLibHandler的最终实现是在RongService中的onBind方法内
RongIMClient中 IM连接服务器的方法
知道了mLibHandler的实现类是LibHandlerStub就好多了,可以看下这个类中的connect方法
在这里插入图片描述
最终连接IM服务的地方是
最终服务的连接是调用的native方法,无法往下跟了,就到这里。
可以看到融云IM中连接是用的一个普通的Service做的
2020年09月03日 21:06 ylxy
上一篇: RongCloud(IM)浅析篇