升级说明
由于谷歌官方决定自 Chrome 93 版本开始不再支持 plan-b
协议,因此 RTCLib v3 目前已停止维护,请所有 RTCLib v3 及 CallLib v3 用户尽快迁移至 RCRTCAdapter 桥接版本,迁移方案请查看【RTCAdapter 替换说明】。
目前所有 RTCLib v3 相关集成文档内容已更新为 RCRTCAdapter 集成文档,新集成用户请优先使用 RTCLib v5.0 并查看相应版本文档。
RCRTCAdapter 是融云为所有 RTCLib v3 用户提供的迁移方案,以便于用户最小化改动的情况下可以直接升级至 RTCLib v5。
安装依赖
迁移前请先确认您当前工程中使用的 RongIMLib 版本及 RongRTCLib 版本,并清理老版本文件引用。
- RongIMLib v2 用户
- RongIMLib v3/v4 用户
- RongIMLib v5 用户
使用 Npm 包管理器方式集成
# 安装 RongIMLib v2 最新版本
npm i @rongcloud/imlib-v2@latest -S
# 安装 RTCLib v5 最新版本
npm i @rongcloud/plugin-rtc@latest -S
# 安装 RCRTCAdapter
npm i @rongcloud/adapter-plugin-rtc@latest -S
已复制
1
2
3
4
5
6
使用 CDN 方式集成
<!-- RongIMLib v2.8 -->
<script src="https://cdn.ronghub.com/RongIMLib-2.11.4.prod.js"></script>
<!-- RTCLib v5.0 -->
<script src="https://cdn.ronghub.com/RCRTC-5.3.13.prod.js"></script>
<!-- RCRTCAdapter -->
<script src=" https://cdn.ronghub.com/RCRTCAdapter-1.1.0.prod.js"></script>
已复制
1
2
3
4
5
6
使用 Npm 包管理器方式集成
# 安装 RongIMLib v4 最新版本
npm i @rongcloud/imlib-v4@latest -S
# 安装 RTCLib v5 最新版本
npm i @rongcloud/plugin-rtc@latest -S
# 安装 RCRTCAdapter
npm i @rongcloud/adapter-plugin-rtc@latest -S
已复制
1
2
3
4
5
6
使用 CDN 方式集成
<!-- RongIMLib v4.4 -->
<script src="https://cdn.ronghub.com/RongIMLib-4.6.4.prod.js"></script>
<!-- RTCLib v5.0 -->
<script src="https://cdn.ronghub.com/RCRTC-5.3.13.prod.js"></script>
<!-- RCRTCAdapter -->
<script src=" https://cdn.ronghub.com/RCRTCAdapter-1.1.0.prod.js"></script>
已复制
1
2
3
4
5
6
使用 Npm 包管理器方式集成
# 安装 RongIMLib v5 最新版本
npm i @rongcloud/imlib-next@latest -S
# 安装 RTCLib v5 最新版本
npm i @rongcloud/plugin-rtc@latest -S
# 安装 RCRTCAdapter
npm i @rongcloud/adapter-plugin-rtc@latest -S
已复制
1
2
3
4
5
6
使用 CDN 方式集成
<!-- RongIMLib v5.0 -->
<script src="https://cdn.ronghub.com/RongIMLib-5.2.3.prod.js"></script>
<!-- RTCLib v5.0 -->
<script src="https://cdn.ronghub.com/RCRTC-5.3.13.prod.js"></script>
<!-- RCRTCAdapter -->
<script src=" https://cdn.ronghub.com/RCRTCAdapter-1.1.0.prod.js"></script>
已复制
1
2
3
4
5
6
代码调整
以下详细列出的是使用 RCRTCAdapter 升级所需要进行的修改内容。注意:RCRTCAdapter 中的模块定义,在多次初始化时仅最后一次的初始化回调有效
初始化 RTCLib
- RongIMLib v2 用户
- RongIMLib v4 用户
- RongIMLib v5 用户
// IMLib v2 初始化
RongIMClient.init(appkey)
// RTCLib v5 初始化,RCRTC 为 RTCLib v5 的顶级变量定义,详情请查看 RTCLib v5 集成文档
const rtcClient = RongIMClient.getInstance().install(RCRTC.installer, { ...params })
已复制
1
2
3
4
5
// IMLib v4 初始化
const im = RongIMLib.init({ appkey: 'your-appkey' })
// RTCLib v5 初始化,RCRTC 为 RTCLib v5 的顶级变量定义,params 详情请查看 RTCLib v5 集成文档
const rtcClient = im.install(RCRTC.installer, { ...params })
已复制
1
2
3
4
5
// IMLib v5 初始化
RongIMLib.init({ appkey: 'your-appkey' })
// RTCLib v5 初始化,RCRTC 为 RTCLib v5 的顶级变量定义,params 详情请查看 RTCLib v5 集成文档
const rtcClient = RongIMLib.installPlugin(RCRTC.installer, { ...params })
已复制
1
2
3
4
5
RCRTCAdapter
API 参考:init
API 参考:changeLiveRole
API 参考:destroy
// 初始化方式变更,不再使用 'new RongRTC()',同时需要传递 RCRTCClient 实例
// 原方法:const rongRTC = new RongRTC({ ... })
RCRTCAdapter.init({ client: rtcClient, bitrate?, liveRole?, mode?, liveType? })
// 由于初始化方式变更,故模块获取方式也需要变更,现在直接通过 RCRTCAdapter 顶级变量获取
// 原方法:const { Room, Stream, Message, Device, Storage, StreamType } = rongRTC
const { Room, Stream, Message, Device, Storage, StreamType, StreamSize,Mode, LiveType, ROLE } = RCRTCAdapter;
// 替换 rongRTC.changeLiveRole 接口
RCRTCAdapter.changeLiveRole(ROLE.AUCHOR)
// 反初始化,相当于原 'rongRTC.destroy()',为避免内存泄露,使用该方法后,已初始化的所有功能模块将失效
RCRTCAdapter.destroy()
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
Room
//Room 模块初始化方式不变
const room = new Room({ id, ...options })
// 加入房间时不再需要传参
room.join(/*{ id: 'userId' }*/)
已复制
1
2
3
4
5
Stream
// Stream 模块初始化方式不变
const stream = new Stream({ ...options })
// 发布资源时不再需要传递当前用户 id
stream.publish({ /*id: '',*/ stream: { tag, type, mediaStream }})
// 发布小流时,需先保证发布了大流数据
stream.publish({ stream: { tag, type, mediaStream, size }})
// 取消发布资源时不再需要传递当前用户 id
stream.unpublish({ /*id: '',*/ stream: { tag, type }})
// 切换大小流 不再需要传递 stream.type 字段
stream.resize({
id: '',
stream: {
tag: '',
size: StreamSize.MAX,
// type: StreamType.AUDIO_AND_VIDEO
}
})
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Monitor
new Monitor({
stats ({ sender, received }) {
// 废弃 sender.packetsLost
// 以下为单个流状态数据的改动
// const track: ITrackStat = sender.tracks[0]
// 废弃:track.trackState
// 废弃:track.codecImplementationName
// 废弃:track.googFirsReceived
// 废弃:track.googPlisReceived
// 废弃:track.googNacksReceived
// 废弃:track.googRenderDelayMs
// 废弃:track.trackReceived
// 废弃:track.samplingRate
// 废弃:track.googCodecName
}
});
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
功能清单
RCRTCAdapter
✅ StreamType
✅ StreamSize
✅ Mode
✅ ROLE
✅ LiveType
✅ LayoutMode
✅ RenderMode
✅ Resolution
✅ RongRTCVideoFps
✅ StorageType
✅ addPublishStreamUrl()
✅ removePublishStreamUrl()
✅ setMixConfig()
Device
- ✅ constructor()
- ✅ get()
Monitor
- ✅ constructor()
Report
- ✅ constructor()
- ✅
start()- RCRTCAdapter 中Report
模块无需再调用start
方法
Message
- ✅ constructor()
- ✅ send()
Storage
- ✅ constructor()
- ✅ set()
- ✅ get()
- ✅ remove()