房间管理
本部分介绍如何进行房间管理,获取房间信息以及用户信息等常见功能。
监听房间连接状态
SDK 内部维护了当前客户端与房间之间的连接状态,建议在加入房间之前,先对连接状态进行监听,根据当前状态处理相关逻辑。
mClient.on('connection-state-changed', function(connectionState) {
console.log('connection-state-changed', connectionState);
});
其中,connectionState 表示当前所处状态,每个状态均与相应行为操作相关,例如:
- 初始情况下,状态为
DISCONNECTED
- 与房间建立连接过程中,状态变为
CONNECTING
- 与房间连接成功后,状态变为
CONNECTED
- 与房间连接断开后重连中,状态变为
RECONNECTING
- 与房间重连成功后,状态变为
RECONNECTED
- 与房间断开连接后,状态再次变为
DISCONNECTED
这里需要注意,状态与操作行为相关,如果发生某种操作与当前状态不符的情况,如正处在 CONNECTED
中却又一次执行加入房间的行为,则会收到 SDK 抛出的错误。
加入房间
在创建房间对象 QNRTCClient 完成之后,可以调用 join 方法来加入房间。
const roomToken = "xxx";
await mClient.join(roomToken);
关于 roomToken 在服务端的生成可查阅 RoomToken 的签算。
当本地加入房间,其他正在房间中的远端用户可以通过监听 user-joined 事件获取该信息。
mClient.on('user-joined', function(user){
console.log('user-joined', user);
});
离开房间
本地调用 leave 方法,可以退出房间。
await mClient.leave();
本地退出房间,正在房间中的远端用户可以通过监听 user-left 事件获取该信息。
mClient.on('user-left', function(user) {
console.log('user-left', user);
});
异常退出房间
在网络发生异常等情况下,如果 SDK 与服务端的连接断开,SDK 内部会尝试主动重连。如果重连成功,connectionState 的状态会变为 RECONNECTED
。
但是,如果经过多种重连逻辑均无法恢复正常连接时,SDK 会主动退出房间,房间连接状态变为 DISCONNECTED
。
此时的事件回调中可以获取到第二个参数 info 对象,该对象中包含了异常退出房间的信息。
import { QNConnectionState, QNConnectionDisconnectedReason } from "qnweb-rtc";
mClient.on('connection-state-changed', function(connectionState, info) {
if (connectionState === QNConnectionState.DISCONNECTED &&
info.reason === QNConnectionDisconnectedReason.ERROR) {
console.warning("网络异常,请检查网络后重试");
}
});
此时建议提示用户网络异常,请用户检查网络后重试。
导致异常退出房间的所有场景和相关错误码
- 用户token错误
错误码10001
- 用户token过期
错误10002
- 断线重连失败
错误码10007
- 用户在其他页面或终端登录
错误码10022
- 房间人数已满
错误码10011
- 房间已关闭
错误码10012
- 重连超时或房间销毁
错误码21003
文档反馈
(如有产品使用问题,请 提交工单)