实现首次通话
适用于 Web 的 CallPlus 可在您的应用程序中为用户之间的一对一和多人通信提供语音和视频通话能力。
CallPlus 支持 一对一通话 和 多人通话。按照下面的指南,您可以从头开始实现一对一通话和多人通话。
环境要求
- 浏览器页面地址必须为 HTTPS 协议地址,或使用 localhost 域名
- WebRTC API 支持的浏览器兼容性可参考此文档
前置条件
每个应用具有两个不同的 App Key,分别对应开发环境与生产环境,两个环境之间数据隔离。在您的应用正式上线前,可切换到使用生产环境的 App Key,以便上线前进行测试和最终发布。
- 注册开发者账号。注册成功后,控制台会默认自动创建您的首个应用,默认生成开发环境下的 App Key,使用国内数据中心
- 获取开发环境的应用 App Key。如不使用默认应用,请参考 如何创建应用,并获取对应环境 App Key 和 App Secret
- 完成开通音视频服务。您需要开通音视频通话服务
Demo 项目
融云提供了一个 Web 端 CallPlus Demo 项目:https://github.com/rongcloud/web-quickdemo-callplus
快速上手
您可以按下面的步骤快速集成音视频通话。
步骤 1:安装 SDK
CallPlus for Web SDK 是融云 @rongcloud/imlib-next
的一个插件。CallPlus SDK 提供音视频呼叫能力,通讯能力依赖融云 @rongcloud/engine
和 @rongcloud/imlib-next
,音视频基础能力依赖融云 @rongcloud/plugin-rtc
。
NPM
使用 NPM 需要安装四个 SDK 包:
# npm
npm install @rongcloud/engine @rongcloud/imlib-next
npm install @rongcloud/plugin-rtc
npm install @rongcloud/plugin-call-plus
在 ES6
模块中导入 CallPlus SDK,如下所示:
import * as RongIMLib from '@rongcloud/imlib-next';
import { installer as rtcInstaller } from '@rongcloud/plugin-rtc';
import { installer as callPlusInstaller } from '@rongcloud/plugin-call-plus';
如果您使用的是 TypeScript,请将 --esModuleInterop
选项设置为 true
以进行默认导入,或使用 import * as callPlus from '@rongcloud/plugin-call-plus'
CDN
您可以使用 <script>
标签外联 JavaScript 文件以引入 CallPlus 及其依赖的 SDK:
<!-- RongIMLib -->
<script src="https://cdn.ronghub.com/RongIMLib-5.24.0.prod.js"></script>
<!-- RTCLib v5 -->
<script src="https://cdn.ronghub.com/RCRTC-5.24.0.prod.js"></script>
<!-- CallPlus -->
<script src="https://cdn.ronghub.com/CallPlus-2.24.0.prod.js"></script>
步骤 2:请求访问媒体设备
CallPlus for Web SDK 需要访问麦克风和摄像头。请在集成页面的浏览器控制台中执行 navigator.mediaDevices.getUserMedia({ audio: true, video: true })
,浏览器可能会提示用户授予麦克风和摄像头访问权限。
步骤 3:使用 App Key 初始化
CallPlus SDK 需要依赖 IMLib 作为信令通道。要在您的应用程序中集成和运行 CallPlus SDK,您需要先对 IM SDK 进行初始化。您需要按照以下步骤完成所有 SDK 初始化:
- 使用您在融云应用的 App Key 初始化
RongIMLib
实例。如果使用不同的APP_Key
初始化实例,客户端应用程序中所有现有的与调用相关的数据将被清除 - 初始化 RTC SDK,此步骤可返回 RCRTCClient 对象
- 初始化 CallPlus SDK,此步骤可返回 RCCallPlusClient 对象
初始化(NPM)
import * as RongIMLib from '@rongcloud/imlib-next';
import { installer as rtcInstaller } from '@rongcloud/plugin-rtc';
import { installer as callPlusInstaller } from '@rongcloud/plugin-call-plus';
// IM 初始化
RongIMLib.init({
appkey: '<Your-Appkey>',
});
// RTC 初始化
const rtcClient = RongIMLib.installPlugin(rtcInstaller, {});
// CallPlus 初始化
const callPlusClient = RongIMLib.installPlugin(callPlusInstaller, {
rtcClient
});