跳到主要内容

初始化

在使用 SDK 其它功能前,必须先进行初始化。请按步骤顺序完成初始化流程。

注意事项

RTCLib 是基于 IMLib 的插件机制所实现的插件。因此必须先初始化 IMLib,再初始化 RTCLib。

准备 App Key

您必须拥有正确的 App Key,才能进行初始化。应用客户端只有在使用同一个 App Key 的情况下,才能实现用户间消息跨平台互通。

您可以登录融云控制台,从服务管理页面,查看您已创建的各个应用的 App Key。

如果您拥有多个应用,请注意选择应用名称(下图中标号 1)。另外,融云的每个应用都提供用于隔离生产和开发环境的两套独立 App Key / Secret。在获取应用的 App Key 时,请注意区分环境(生产 / 开发,下图中标号 2)。

提示
  • 如果您并非应用创建者,我们建议在获取 App Key 时确认页面上显示的数据中心是否符合预期。
  • 如果您尚未向融云申请应用上线,仅可使用开发环境。

appkey

初始化之前

部分配置必须在初始化之前完成,否则 SDK 功能无法正常工作。

  • 开通音视频服务:音视频服务需要手动开通。请根据应用的具体业务类型,开通对应的音视频服务。详细说明请参见开通音视频服务
  • 海外数据中心:如果您的应用使用海外数据中心,必须在初始化之前修改 IMLib SDK 连接的服务地址为海外数据中心地址。否则 SDK 默认连接中国国内数据中心服务地址。详细说明请参见配置海外数据中心服务地址

步骤 1: 初始化 IMLib

本步骤仅说明如何获取 IMLib 实例。关于 IMLib 的详细初始化过程,请查阅对应版本和平台的 IMLib 初始化文档。

初始化 5x 版本 IMLib

以下示例使用 Typescript 进行编码,便于开发者更好的理解相关值的类型信息。

import * as RongIMLib from '@rongcloud/imlib-next'
import { installer, RCRTCCode } from '@rongcloud/plugin-rtc'
// 初始化 IM
RongIMLib.init({
appkey: '<Your-Appkey>',
});

/**
* 监听消息通知
*/
const Events = RongIMLib.Events;
RongIMLib.addEventListener(Events.MESSAGES, (event) => {
console.log('received messages', event.messages);
});

/**
* 监听 IM 连接状态变化
*/
RongIMLib.addEventListener(Events.CONNECTING, () => {
console.log('onConnecting');
});
RongIMLib.addEventListener(Events.CONNECTED, () => {
console.log('onConnected');
});
RongIMLib.addEventListener(Events.DISCONNECT, (status) => {
console.log('连接中断,需要业务层进行重连处理 ->', status)
})

初始化 4x 版本 IMLib

以下示例使用 Typescript 进行编码,便于开发者更好的理解相关值的类型信息。

import * as RongIMLib from '@rongcloud/imlib-v4-adapter'
import { installer, RCRTCCode } from '@rongcloud/plugin-rtc'
// 获取 IMLib 实例
const im = RongIMLib.init({ appkey: '<Your-Appkey>' })
// 监听 IMLib 连接状态变化
im.watch({
status (status) {
// IM 连接状态变更通知
}
})

如需 IMLib v4 的 API 接口说明,请转至 API 参考文档:

初始化 2x 版本 IMLib

以下示例使用 Typescript 进行编码,便于开发者更好的理解相关值的类型信息。

import { RongIMClient, ConnectionStatus } from '@rongcloud/imlib-v2-adapter'
import { installer, RCRTCCode } from '@rongcloud/plugin-rtc'
// 初始化 IMLib
RongIMClient.init('<Your-Appkey>')
// 设置 IM 连接状态监听
RongIMClient.setConnectionStatusListener({
onChanged (status: ConnectionStatus) {
// 连接状态变更通知
}
})

步骤 2: 初始化 RTCLib

以下示例使用 Typescript 进行编码,便于开发者更好的理解相关值的类型信息。

5x 版本 IMLib install RTCLib

如果使用 IMLib 5.X,调用 installPlugin 方法初始化 RTCLib。

// 初始化 RCRTCClient,初始化过程推荐放在建立连接之前
const rtcClient = RongIMLib.installPlugin(installer, myIRCRTCInitOptions)

初始化 RTCLib 时,可按需传入 RTCLib 初始化参数,详见 IRCRTCInitOptions。以下仅为示例:

{
/**
* 自定义 MediaServer Url,公有云用户无需关注
* @description
* 1. 仅当 `location.hostname` 为 `localhost` 时,`http` 协议地址有效,否则必须使用 `https` 协议地址
* 2. 当该值有效时,将不再从 IMLib 导航数据中获取 mediaServer 地址
*/
mediaServer?: string,
/**
* 输出日志等级,生产环境默认使用 WARN,开发环境默认使用 DEBUG
* @description
* * 4 - DEBUG
* * 3 - INFO
* * 2 - WARN
* * 1 - ERROR
*/
logLevel?: LogLevel
/**
* 与 MediaServer 的 http 请求超时时间,单位为毫秒,默认值为 `5000`,有效值 `5000-30000`。
* 优先级:用户配置 > 导航配置 > 默认时间。
*/
timeout?: number,
/**
* 房间 Ping 间隔时长,默认 `10000` ms,有效值 `3000`-`10000`
*/
pingGap?: number,
/**
* 内置 CDN 观看地址直播拉流协议,默认为 RCInnerCDNPullKind.FLV
*/
pullInnerCDNProtocol?: RCInnerCDNPullKind
/**
* 内置 CDN 观看地址是否使用 https,默认为 RCInnerCDNPullIsHttps.HTTPS
*/
pullInnerCDNUseHttps?: RCInnerCDNPullIsHttps
}

4x 版本 IMLib install RTCLib

如果使用 IMLib 4.X,需要调用 install 方法初始化 RCRTCClientoptions 参数的详细说明参见 IRCRTCInitOptions

// 初始化 RCRTCClient,初始化过程推荐放在建立连接之前
const rtcClient = im.install(installer, { /*初始化参数请参考 IRCRTCInitOptions 参数说明*/ })

2x 版本 IMLib install RTCLib

如果使用 IMLib 2.X,需要调用 install 方法初始化 RCRTCClientoptions 参数的详细说明参见 IRCRTCInitOptions

// 初始化 RCRTCClient,初始化过程推荐放在建立连接之前
const rtcClient = RongIMLib.RongIMClient.getInstance().install(installer, { /*初始化参数请参考 IRCRTCInitOptions 参数说明*/ })

步骤 3: IMLib 连接

5x 版本 IMLib 连接

RongIMLib.connect('<Your-Token>').then((user) => {
console.log('connect success', user.data.userId);
})
.catch((error) => {
console.log(`连接失败: ${error}`);
});

4x 版本 IMLib 连接

API 参考:connect

// 连接 im
im.connect({ token: '<Your-Token>' }).then(user => {
console.log('链接成功, 链接用户 id 为: ', user.id);
}).catch(error => {
console.log('链接失败: ', error.code, error.msg);
});

2x 版本 IMLib 连接

// 连接 im
RongIMClient.connect('<Your-Token>', {
onSuccess: function(userId) {
console.log('连接成功, 用户 ID 为', userId);
},
onTokenIncorrect: function() {
console.log('连接失败, 失败原因: token 无效');
},
onError: function(errorCode) {
console.log('连接失败, 失败原因: ', errorCode);
}
});