跳到主要内容

同房间连麦

设置角色切换事件回调监听

方法

JavaScript
engine.setOnLiveRoleSwitchedListener();

回调参数

参数类型说明
roleRCRTCRole切换后的角色
codeNumber错误码,0 表示成功
errMsgString错误信息

示例代码

JavaScript
// 切换角色的回调
engine.setOnLiveRoleSwitchedListener(({role, code, errMsg}) => {
if (code == 0) {
// 切换成功
console.log('角色切换成功:', role);
} else {
// 切换失败
console.log('角色切换失败:', errMsg);
}
});

观众上麦

观众上麦本质上是切换身份变成当前房间的主播,然后以主播身份继续直播相关操作。

切换为主播

当观众需要上麦,跟房间内的其他主播互动时,调用 switchLiveRole 方法,参数传 RCRTCRole.LiveBroadcaster 切换身份为主播。

方法

JavaScript
engine.switchLiveRole();

参数说明

参数类型必填说明
roleRCRTCRole目标角色

示例代码

JavaScript
// 调用切换角色
engine.switchLiveRole(RCRTCRole.LiveBroadcaster);
console.log('切换为主播请求已发送');

观众下麦

主播下麦本质上是切换身份变成当前房间的观众,然后以观众身份继续观看直播等相关操作。

切换为观众

当身份为主播时,调用 switchLiveRole 方法,参数传 RCRTCRole.LiveAudience 切换身份为观众。

提示

如果当前主播用户已通过跨房间连麦加入了其他房间,仍可成功切换为观众身份。此时 SDK 内部会帮其退出所有副房间,但不会结束本次连麦。如果需要结束连麦,请在切换角色前调用 leaveSubRoom 方法 disband 参数传 true 即可。

方法

JavaScript
engine.switchLiveRole();

参数说明

参数类型必填说明
roleRCRTCRole目标角色

示例代码

JavaScript
// 调用切换角色
engine.switchLiveRole(RCRTCRole.LiveAudience);
console.log('切换为观众请求已发送');

订阅资源

直播用户切换身份后,默认会退订所有资源,请按需重新订阅。

  • 观众切换为主播成功后,可以用切换身份之前保存的远端发布资源信息来订阅远端资源。参见主播订阅资源
  • 主播切换为观众成功后,可以在远端发布合流资源的回调中订阅合流,远端主播发布合流资源的回调会在切换成功后被触发。也可以用之前保存的远端发布资源信息订阅远端主播的分流,详见以下文档:

房间内事件

当房间内的用户使用 switchLiveRole 方法上下麦时,同房间内的其他主播可以通过 setOnRemoteLiveRoleSwitchedListener 方法监听到远端用户切换身份。

如果用户订阅了一个主播的音视频流,当这个主播切为观众身份时,SDK 内部会主动取消订阅不存在的音视频流,您可以在此回调方法中,更新当前页面视图等操作。

设置远端角色切换监听

方法

JavaScript
engine.setOnRemoteLiveRoleSwitchedListener();

回调参数

参数类型说明
roomIdString房间 ID
userIdString用户 ID
roleRCRTCRole切换后的角色

示例代码

JavaScript
// 远端用户切换角色的回调
engine.setOnRemoteLiveRoleSwitchedListener(({roomId, userId, role}) => {
console.log('远端用户角色切换:', userId, '新角色:', role);
});