基本操作
本文档介绍房间的基本操作,包括创建/加入房间和退出房间的完整流程。
创建/加入房间
通过 RCRTCEngine
下的 joinRoom
方法加入房间,如果指定的房间不存在,SDK 会自动创建该房间并将用户加入。
SessionId 说明
每个房间创建时,融云服务会生成全网唯一的 SessionId,用于后台业务查询和问题追踪。当房间内所有用户退出或被服务器判定掉线后,Session 结束。即使使用相同的 RoomId 重新创建房间,SessionId 也会更新为新值。
会议模式加入房间
适用于多人音视频会议场景,推荐使用简化的接口:
接口:
Java
joinRoom(String roomId, IRCRTCResultDataCallback<RCRTCRoom> callBack)
参数说明:
参数 | 类型 | 说明 |
---|---|---|
roomId | String | 房间唯一标识符,支持大小写英文字母、数字、特殊符号(+ = - _),最长 64 个字符 |
callBack | IRCRTCResultDataCallback<RCRTCRoom> | 加入房间结果回调 |
示例代码:
Java
String roomId = "meeting_room_001";
RCRTCEngine.getInstance().joinRoom(roomId, new IRCRTCResultDataCallback<RCRTCRoom>() {
@Override
public void onSuccess(RCRTCRoom room) {
// 加入房间成功
}
@Override
public void onFailed(RTCErrorCode errorCode) {
// 由于 SDK 未初始化,网络异常等原因,造成的加入房间失败后的逻辑处理 ...
// 失败原因参考 code 的具体含义。
// 处理逻辑可以是过段时间重新加入,或给用户弹通知等。
}
});
直播模式加入房间
适用于直播场景,需要指定房间类型和用户角色,推荐使用带配置的接口:
接口:
Java
joinRoom(String roomId, RCRTCRoomConfig config, IRCRTCResultDataCallback<RCRTCRoom> callBack)
参数说明:
参数 | 类型 | 说明 |
---|---|---|
roomId | String | 房间唯一标识符,支持大小写英文字母、数字、特殊符号(+ = - _),最长 64 个字符 |
config | RCRTCRoomConfig | 房间配置对象(可选),用于设置房间类型和用户角色等 |
callBack | IRCRTCResultDataCallback<RCRTCRoom> | 加入房间结果回调 |
示例代码:
Java
String roomId = "live_room_001";
// 创建房间配置,设置为音视频直播模式,角色为主播
RCRTCRoomConfig config = RCRTCRoomConfig.Builder.create()
.setRoomType(RCRTCRoomType.LIVE_AUDIO_VIDEO)
.setLiveRole(RCRTCLiveRole.BROADCASTER)
.build();
RCRTCEngine.getInstance().joinRoom(roomId, config, new IRCRTCResultDataCallback<RCRTCRoom>() {
@Override
public void onSuccess(RCRTCRoom room) {
// 成功后的逻辑处理 ...
}
@Override
public void onFailed(RTCErrorCode errorCode) {
// 由于 SDK 未初始化,网络异常等原因,造成的加入房间失败后的逻辑处理 ...
// 失败原因参考 code 的具体含义。
// 处理逻辑可以是过段时间重新加入,或给用户弹通知等。
}
});
房间配置选项
RCRTCRoomConfig
提供以下配置选项:
配置方法 | 说明 | 适用场景 |
---|---|---|
setRoomType() | 设置房间类型(会议模式/直播模式,默认是会议模式) | 所有场景 |
setLiveRole() | 设置直播角色(主播/观众) | 仅直播模式有效 |
setUserDatas() | 设置用户扩展信息。用户加入房间时可携带的扩展信息。服务端可以通过人员管理接口查询用户属性信息。 | 需要携带额外用户数据时 |
setJoinType() | 设置多端登录策略。 | 支持多端登录的应用 |
setJoinType()
方法,假设当前账号已在其他端加入房间,设置为 RCRTCJoinType.KICK
会导致在
用户其他端加入房间时踢掉已在房间的同账号用户。设置为 RCRTCJoinType.REFUSE
,则会保留已在房间的同账号用户的登录状态,当前尝试登陆的用户会返回加入失败。
退出房间
退出房间需要按照正确的顺序操作,确保资源得到妥善释放。
操作步骤
步骤一:关闭视频采集(如果已开启)
在调用 leaveRoom 之前,必须手动关闭视频采集:
Java
RCRTCEngine.getInstance().getDefaultVideoStream().stopCamera();
重要提醒
leaveRoom
接口不会自动关闭视频采集。如果不主动关闭,可能导致:
- 设备耗电量增加
- 摄像头资源未释放
步骤二:退出房间
调用 leaveRoom 接口退出房间,SDK 会自动取消所有已发布和订阅的资源:
Java
RCRTCEngine.getInstance().leaveRoom(new IRCRTCResultCallback() {
@Override
public void onSuccess() {
// 成功退出房间
Log.d("RTC", "成功退出房间");
}
@Override
public void onFailed(RTCErrorCode errorCode) {
// 退出房间失败
Log.e("RTC", "退出房间失败: " + errorCode);
}
});