基本操作
加入房间
加入房间需要调用 joinRTCRoom 接口。调用成功后将返回:
RCRTCRoom房间实例- 当前房间内的用户 ID 列表
- 已发布的远端资源
接口
typescript
rtcClient.joinRTCRoom(roomId)
参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| roomId | string | 是 | 房间 ID |
示例代码
typescript
/**
* 加入普通音视频房间
* @param roomId 房间 ID
* @returns data.room 当前加入的房间实例
* @returns data.userIds 当前房间内的其他用户 ID
* @returns data.streams 当前房间内的其他用户发布的资源
*/
const { code, data } = await rtcClient.joinRTCRoom('roomId')
// 若加入失败,则 data 值为 undefined
if (code !== RCRTCCode.SUCCESS) {
console.log('join room failed:', code)
return
}
const { room, userIds, streams: RCRemoteStreams } = data
注册房间事件监听器
成功加入房间后,可通过房间实例 room 注册事件监听器 registerRoomEventListener,重复注册时,仅最后一次注册有效。
示例代码
typescript
// 注册房间事件监听器,重复注册时,仅最后一次注册有效
room.registerRoomEventListener({
/**
* 本端被踢出房间时触发
* @description 被踢出房间可能是由于服务端超出一定时间未能收到 rtcPing 消息,所以认为己方离线。
* 另一种可能是己方 rtcPing 失败次数超出上限,故而主动断线
* @param byServer
* 当值为 false 时,说明本端 rtcPing 超时
* 当值为 true 时,说明本端收到被踢出房间通知
*/
onKickOff (byServer: boolean) {
// 被踢出房间时,将不能继续发布资源、订阅资源,业务层可去掉远端资源的 UI 展示或重新加入房间
},
/**
* 接收到房间信令时回调,用户可通过房间实例的 `sendMessage(name, content)` 接口发送信令
* @param name 信令名
* @param content 信令内容
* @param senderUserId 发送者 ID
* @param messageUId 消息唯一标识
*/
onMessageReceive (name: string, content: any, senderUserId: string, messageUId: string) {
},
/**
* 监听房间属性变更通知
* @param name
* @param content
*/
onRoomAttributeChange (name: string, content: string) {
},
/**
* 发布者禁用/启用音频
* @param stream RCRemoteStream 类实例
*/
onAudioMuteChange (stream: RCRemoteStream) {
},
/**
* 发布者禁用/启用视频
* @param stream RCRemoteStream 类实例对象
*/
onVideoMuteChange (stream: RCRemoteStream) {
},
/**
* 房间内其他用 户新发布资源时触发
* 如需获取加入房间之前房间内某个用户发布的资源列表,可使用 room.getRemoteStreamsByUserId('userId') 获取
* @param streams 新发布的资源列表,一组 RCRemoteStream 实例
*/
onStreamPublish (streams: RCRemoteStream[]) {
// 按业务需求选择需要订阅资源,通过 room.subscribe 接口进行订阅
const { code } = await room.subscribe(streams)
if (code !== RCRTCCode.SUCCESS) {
console.log('资源订阅失败 ->', code)
}
},
/**
* 房间用户取消发布资源
* @param streams 被取消发布的资源列表
* @description 当资源被取消发布时,SDK 内部会取消对相关资源的订阅,业务层仅需处理 UI 展示
*/
onStreamUnpublish (streams: RCRemoteStream[]) {
},
/**
* 人员加入
* @param userIds 加入的人员 ID 列表
*/
onUserJoin (userIds: string[]) {
},
/**
* 人员退出
* @param userIds
*/
onUserLeave (userIds: string[]) {
}
})
订阅远端资源
加入房间后如需获取其他用户发布的资源,可调用 subscribe 接口进行订阅。
接口
typescript
room.subscribe(streams)