同一个用户可以同时加入多个房间,并同时在多个房间内推流、拉流、发送实时消息和接收消息回调。
本功能可以隔离多个房间的消息及回调,实现更灵活的连麦业务。ZEGO 推荐用于跨房间连麦和在线教育的超级小班场景。
主播 A 与主播 B 进行跨房间连麦,主播 A 可以通知房间 A 中所有观众登录主播 B 的房间进行拉流,主播 B 同样可以通知房间 B 中所有观众登录主播 A 的房间进行拉流。
老师进入大班房间推流,学生都登录大班房间拉流,同时登录小组房间与同组学生讨论和连麦。助教老师登录小组房间维持课堂秩序或解答学生问题。
请参考 下载示例源码 获取源码。
相关源码请查看 “/pages/example/other/login-multi-room” 目录下的文件。
在实现多房间功能之前,请确保:
已在项目中集成 ZEGO Express SDK(2.9.0 及以上版本),实现基本的实时音视频功能,详情请参考 快速开始 - 集成 和 快速开始 - 实现流程。
已在 ZEGO 控制台 创建项目,并申请有效的 AppID 和 AppSign,详情请参考 控制台 - 项目管理 中的“项目信息”。
已联系 ZEGO 技术支持开通多房间功能。
以同一用户加入两个房间为例,整体实现流程如下:
具体功能的实现如下:
必须在初始化 SDK 之前,调用 setRoomMode 接口,通过 ZegoRoomMode 类将房间模式设置为多房间模式,即 “mode” 取值为 “MultiRoom”。
如果在没有开通多房间功能的情况下设置多房间模式,则登录房间会失败并报错,返回错误码为 “1002036”。
// 设置房间模式为多房间模式
ZegoExpressEngine.setRoomMode(ZegoRoomMode.MultiRoom)
请参考 快速开始 - 实现流程 的 “初始化” 进行 SDK 的初始化。
传入房间 ID(roomID)等参数,调用 loginRoom 接口登录房间。
// 创建用户
let user = {userID: "userID1", userName: "userName1"};
// 开始登录房间
ZegoExpressEngine.instance().loginRoom("room1", user);
传入流 ID(streamID)、房间 ID(roomID)等参数,调用 startPublishingStream(带有 “ZegoPublisherConfig” 参数)接口在指定房间内推流。
多房间模式下,必须使用 ZegoPublisherConfig 指定 “streamID” 关联的 “roomID”,退出指定房间后会停止该房间对应的推流操作。
let config = {roomID: "room1"};
// 开始推流
ZegoExpressEngine.instance().startPublishingStream("stream1", ZegoPublishChannel.Main, config);
传入流 ID(streamID)、房间 ID(roomID)等参数,调用 startPlayingStream(带有 “ZegoPlayerConfig” 参数)接口在指定房间内拉流。
多房间模式下,必须使用 ZegoPlayerConfig 指定 “streamID” 关联的 “roomID”,退出指定房间后会停止该房间对应的拉流操作。
let config = {config: "room1"};
// 开始拉流
ZegoExpressEngine.instance().startPlayingStream("stream1", ZegoPublishChannel.Main, config);
多房间与单房间发送、接收实时消息的实现一致,详情请参考 常用功能 - 实时消息。
传入房间 ID(roomID),调用 logoutRoom 接口退出房间。
如果想一次性退出所有已登录的房间,可以直接调用 logoutRoom 接口,不传入参数即可。
// 退出房间
ZegoExpressEngine.instance().logoutRoom("room1");
在没有开通多房间功能的情况下设置了多房间模式,登录房间会失败,返回错误码 “1002036”。
同时登录的房间数超过最大房间个数后会返回错误码 “1002037”。目前默认最多同时加入 5 个房间,如有更多需求,请联系 ZEGO 技术支持提供扩展能力。
多房间模式下,传入的登录用户信息不相同,则会返回错误码 “1002018”。
多房间模式下,必须调用带有 “ZegoPublisherConfig” 参数的 startPublishingStream 接口进行推流,否则会返回错误码 “1003070”。
多房间模式下,必须调用带有 “ZegoPlayerConfig” 参数的 startPlayingStream 接口进行拉流,否则会返回错误码 “1004070”。
联系我们
文档反馈