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

联系我们
文档反馈