百家云 SDK 使用 client 对象来管理一个本地用户在房间内的行为,在进入房间之前需要先创建一个 Client 对象。相关函数接口在 electron-sdk 2.0.7 及以上版本支持。
调用 createBRTCloud 即可创建 BRTC 实例对象,请确保在调用其他 API 前先调用该方法创建并初始化。注意 不要用 delete 销毁该 BRTC 实例对象,应该调用 destroyBRTCCloud 来销毁实例。
join() { return new Promise((resolve, reject) => { this.$store.state.roomId = '112233' this.$store.state.userId = '666' this.appId = 'BZdfkj9dfd8df7df0df7df7' // 创建主 client this.client = BRTCCloud.createBRTCloud({ appId: this.appId }) // 推摄像头的 userId 以 0 结尾 this.getToken(parseInt(this.$store.state.userId) * 10 + '').then( token => { Promise.all([ this.client.enterRoom(this.$store.state.roomId, this.$store.state.userId + '0', token) ]).then( () => { this.$message.success('加入房间成功') this.$store.commit('joined', { joined: true }) if (this.$store.state.videoOn || this.$store.state.audioOn) { this.publishCameraStream() } resolve() }, (error) => { console.log(error) this.$message({ type: 'error', message: '加入房间失败' }) this.$router.push({ path: 'join' }) } ) }, () => { reject() } ) }) } close: function () { // 销毁创建出来的实例 try { if (this.client) { BRTCCloud.destroyBRTCCloud() } } catch (error) { } }
在创建 BRTC 对象完成后 ,您可以根据业务场景监听需要关注的事件做相应的逻辑处理。 这些事件包含在运行期间所发生的错误信息、以及各种音视频、房间相关的事件,。
// 创建主 client this.client = BRTCCloud.createBRTCloud({appId: this.appId}) this.client .on('peer-joined', uid => { console.log('\n user joined: ' + uid + ', event: peer-joined') } ) .on('peer-leaved', uid => { console.log('\n user leaved: ' + uid + ', event: peer-leaved') } ) .on( 'switch-role', (code, name) => { console.log(`\n 用户切换角色成功: ${name} , event: switch-role,code ${code} `) } ) .on('snapshot-completed', (uid, data, length, width, height) => { console.log(`\n 用户 ${uid} 完成截图操作, event: snapshot-completed`) fs.writeFile( uid + '截图.jpg', data, function (err) { if (err) { console.error('保存截图失败') } }); } ) .on('user-voice-volume', (userVolumes, userVolumeCount, totalVolume) => { console.log(`\n 用户音量检测, userVolumes: ${userVolumes}, userVolumeCount: ${userVolumeCount}, totalVolume: {totalVolume}, event: user-voice-volume`) } ) .on('user-video-available-changed', (uid, videoOn) => { console.log(`\n 用户 ${uid} 视频流 ${videoOn} 可用变动, event: user-video-available-changed`) } ) .on('user-sub-video-available-changed', (uid, videoOn) => { console.log(`\n 用户 ${uid} 订阅视频流 ${videoOn} 可用变动, event: user-sub-video-available-changed`) } ) .on('user-audio-available-changed', (uid, audioOn) => { console.log(`\n 用户 ${uid} 音频流 ${audioOn} 可用变动, event: user-audio-available-changed`) } ) .on('statistics', statistics => { // 添加处理推拉流质量的处理逻辑 } ) .on('error', (errorCode, msg) => { console.error(`出现错误, 错误码 code: ${errorCode}, msg: ${msg}`) } ) .on('record-started', msg => { console.log(`\n 录制开始, ${msg} , event: record-started`) } ) .on('record-stopped', msg => { console.log(`\n 录制停止, ${msg} , event: record-stopped`) } ) .on('record-error', msg => { console.log(`\n 录制异常, ${msg} , event: record-error`) } )
在调用 enterRoom 接口时需要填写输入参数用户ID、房间号、用户签名。
准备好参数后,就可以调用 enterRoom 接口函数进入房间了。
var roomID = "123456"; var sig = "9sdw9sssq"; var userId = "111111"; this.client.enterRoom(roomId, userId, sig)
进入房间事件回调
this.client.on('room-joined', uid => { console.log('\n I am joined, event: room-joined') //添加进入房间回调的处理逻辑 } )
调用 exitRoom 接口即可退出当前的房间,SDK 会在退房结束后通过 room-leaved 事件通知您。
//调用接口主动退出房间 this.client.exitRoom().then(() => { console.log('离开房间成功') }) this.client.on('room-leaved', reason => { console.log(`\n 房间结束, 原因: ${reason} , event: room-leaved`) //添加退出房间回调的处理逻辑 } ) if (this.client) { BRTCCloud.destroyBRTCCloud() }
加入和离开房间
百家云 SDK 使用 client 对象来管理一个本地用户在房间内的行为,在进入房间之前需要先创建一个 Client 对象。
相关函数接口在 electron-sdk 2.0.7 及以上版本支持。
创建 BRTC 实例对象
调用 createBRTCloud 即可创建 BRTC 实例对象,请确保在调用其他 API 前先调用该方法创建并初始化。
注意 不要用 delete 销毁该 BRTC 实例对象,应该调用 destroyBRTCCloud 来销毁实例。
监听 SDK 的事件
在创建 BRTC 对象完成后 ,您可以根据业务场景监听需要关注的事件做相应的逻辑处理。 这些事件包含在运行期间所发生的错误信息、以及各种音视频、房间相关的事件,。
进房间参数
在调用 enterRoom 接口时需要填写输入参数用户ID、房间号、用户签名。
进入房间
准备好参数后,就可以调用 enterRoom 接口函数进入房间了。
进入房间事件回调
退出房间
调用 exitRoom 接口即可退出当前的房间,SDK 会在退房结束后通过 room-leaved 事件通知您。