实时音视频

  • 实时音视频 > 使用指南 > WXApp >房间管理

    房间管理

    最近更新时间: 2022-02-28 15:56:09

    本部分介绍如何进行房间管理,获取房间信息以及用户信息等常见功能。

    监听房间连接状态

    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("网络异常,请检查网络后重试");
      }
    });
    

    此时建议提示用户网络异常,请用户检查网络后重试。

    以上内容是否对您有帮助?
  • Qvm free helper
    Close