实时音视频

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

    房间管理

    最近更新时间:2021-11-19 11:37:56

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

    监听房间连接状态

    SDK 内部维护了当前客户端与房间之间的连接状态,建议在加入房间之前,先对连接状态进行监听,根据当前状态处理相关逻辑。

    mClient.on('connection-state-changed', function(connectionState) {
        console.log('connection-state-changed', connectionState);
    });
    

    其中,connectionState 表示当前所处状态,每个状态均与相应行为操作相关,例如:

    • 初始情况下,状态为 DISCONNECTED
    • 与房间建立连接过程中,状态变为 CONNECTING
    • 与房间连接成功后,状态变为 CONNECTED
    • 与房间断开连接后,状态再次变为 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("网络异常,请检查网络后重试");
        }
    });
    

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

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