房间管理
本部分介绍如何进行房间管理,获取房间信息以及用户信息等常见功能。
监听房间连接状态
SDK 内部维护了当前客户端与房间之间的连接状态,建议在加入房间之前,先对连接状态进行监听,根据当前状态处理相关逻辑。
client.on("connection-state-changed", (connectionState) => {
console.log("connection-state-changed", connectionState);
});
其中 connectionState 表示当前所处状态,每个状态均与相应行为操作相关,例如:
- 初始情况下,状态为
DISCONNECTED
- 与房间建立连接过程中,状态变为
CONNECTING
- 与房间连接成功后,状态变为
CONNECTED
- 与房间断开连接后,状态再次变为
DISCONNECTED
加入房间
在创建房间对象 QNRTCClient 完成之后,可以调用 join 方法来加入房间。
const roomToken = "...";
await client.join(roomToken);
关于 roomToken 在服务端的生成可查阅 RoomToken 的签算。
当本地加入房间,其他正在房间中的远端用户可以通过监听 user-joined 事件获取该信息。
Client.on("user-joined", (user) => {
console.log("user-joined", user);
});
离开房间
本地调用 leave 方法,可以退出房间。
await client.leave();
本地退出房间,正在房间中的远端用户可以通过监听 user-left 事件获取该信息。
client.on("user-left", (user) => {
console.log("user-left", user);
});
异常退出房间
在网络发生异常等情况下,如果 SDK 与服务端的连接断开,SDK 内部会尝试主动重连。如果重连成功,connectionState 的状态会变为 RECONNECTED
。
但是,如果经过多种重连逻辑均无法恢复正常连接时,SDK 会主动退出房间,房间连接状态变为 DISCONNECTED
。
此时的事件回调中可以获取到第二个参数 info 对象,该对象中包含了异常退出房间的信息。
import { QNConnectionState, QNConnectionDisconnectedReason } from "qnweb-rtc";
client.on("connection-state-changed", function (connectionState, info) {
if (
connectionState === QNConnectionState.DISCONNECTED &&
info.reason === QNConnectionDisconnectedReason.ERROR
) {
console.warning("网络异常,请检查网络后重试");
}
});
此时建议提示用户网络异常,请用户检查网络后重试。
文档反馈
(如有产品使用问题,请 提交工单)