有两种方式:
npm install --save urtc-sdk
或
yarn add urtc-sdk
2)项目中引入并创建 client
import { Client } from 'urtc-sdk';
const client = new Client(appId, token); // 默认为连麦模式(小班课),若为直播模式(大班课)时,需要传入第三个参数 { type: 'live' },更多配置见 sdk API 说明
1)直接将 sdk 中 lib 目录下的 index.js 使用 script 标签引入
<script type="text/javascript" src="index.js"><script>
2)使用全局对象 UCloudRTC 创建 client
const client = new UCloudRTC.Client(appId, token);
注:创建 client 时传的 token 需要使用 AppId 和 AppKey 等数据生成,测试阶段,可临时使用 sdk 提供的 generateToken 方法生成,但为保证 AppKey 不暴露于公网,在生产环境中强烈建议自建服务,由服务器按规则生成 token 供 sdk 使用。
client.on('stream-published', (stream) => {
// 使用 HtmlMediaElement 播放媒体流。将流的 mediaStream 给 Video/Audio 元素的 srcObject 属性,即可播放,注意设置 autoplay 属性以支持视频的自动播放,其他属性请参见 [<video>](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/video)
htmlMediaElement.srcObject = stream.mediaStream;
}); // 监听本地流发布成功事件,在当前用户执行 publish 后,与服务器经多次协商,成功后会触发此事件
client.on('stream-subscribed', (stream) => {
// 使用 HtmlMediaElement 播放媒体流
htmlMediaElement.srcObject = stream.mediaStream;
}); // 监听远端流订阅成功事件,在当前用户执行 subscribe 后,与服务器经多次协商,成功后会触发此事件
client.on('stream-added', (stream) => {
client.subscribe(stream.sid);
}); // 监听新增远端流事件,在远端用户新发布流后,服务器会推送此事件的消息。注:当刚进入房间时,若房间已有的正在发布的流,也会通过此事件进行通知业务侧
client.joinRoom(roomId, userId, () => {
client.publish();
}); // 在 joinRoom 的 onSuccess 回调函数中执行 publish 发布本地流
client.unpublish(pubStreamId);
client.unsubscribe(subStreamId);
client.leaveRoom();