房间管理
房间表示一个多人的视频会话,本部分介绍如何进行房间管理,获取房间信息以及用户信息等常见功能。
加入房间
本地调用 QNRTCClient.Join(String token) 通过 roomToken 加入房间。
virtual void Join(const std::string& token, const std::string& user_data = "") = 0;
示例代码如下:
client->Join(room_token);
- 请确保在
QNConnectionState.kDisconnected
状态下调用该接口加入房间,否则接口调用无效- 加入房间时根据业务需求,每个用户可通过
user_data
携带自定义数据
关于 roomToken 在服务端的生成可查阅 RoomToken 的签算。
本地加入房间成功后,会触发如下回调:
本地用户收到的回调:
当成功加入房间后,会通过 QNClientEventListener.OnConnectionStateChanged 接收到房间状态改变的通知
class QNClientEventListener
{
public:
// 当房间状态改变时会触发此回调,成功加入房间后,回调状态为 QNConnectionState.kConnected
virtual void OnConnectionStateChanged(QNConnectionState state, const QNConnectionDisconnectedInfo& info) = 0;
}
远端用户收到的回调:
class QNClientEventListener
{
public:
// 当远端用户加入房间时会触发此回调
virtual void OnUserJoined(const std::string& remote_user_id, const std::string& user_data) = 0;
}
离开房间
本地调用 QNRTCClient.Leave() 退出房间。本地退出房间成功后,会触发如下回调:
本地用户收到的回调:
class QNClientEventListener
{
public:
// 当房间状态改变时会触发此回调,成功离开房间后,回调状态为 QNConnectionState.kDisconnected,QNConnectionDisconnectedInfo 回调 Reason 为 kLeave
void OnConnectionStateChanged(QNConnectionState state, const QNConnectionDisconnectedInfo& info) = 0;
}
远端用户收到的回调:
class QNClientEventListener
{
public:
// 当远端用户离开房间时会触发此回调
virtual void OnUserLeft(const std::string& remote_user_id) = 0;
}
房间信息
获取房间内远端用户信息
本地可调用 QNRTCClient.GetRemoteUsers(const std::string& userId) 接口获取音视频通话房间中的指定用户。
virtual QNRemoteUser& GetRemoteUsers(const std::string& userId) = 0;out/
本地可调用 QNRTCClient.GetRemoteUsers() 接口获取音视频通话房间中的远端用户列表。
virtual RemoteUserList& GetRemoteUsers() = 0;
其中,QNRemoteUser 代表远端用户的信息,通过该对象可以获取指定 user 发布的音视频列表以及本地对其的订阅情况。
文档反馈
(如有产品使用问题,请 提交工单)