Netless

Netless

  • 通用文档
  • 常见问题
  • JavaScript
  • Android
  • iOS
  • Server
  • GitHub
  • 🇬🇧 English

›客户端 SDK

阅读说明

  • 阅读说明

管理控制台

  • 应用与权限
  • 配置云存储

客户端 SDK

  • 实时房间状态管理
  • 房间业务状态管理
  • 视角与坐标
  • 自定义事件
  • 视角模式-主播与跟随者
  • 播放速率(三端)
  • 防火墙和代理
  • 如何高效使用文档转换功能
  • 关于日志

实时房间状态管理

房间的状态

房间状态变化图如下。

房间状态变化图

其中,房间状态描述如下。

房间名描述
Connecting正在连接房间
Connected连接成功,只有此时,实时互动才能正常工作
Disconnecting正在离开房间
Reconnecting正在重新连接房间
Disconnected已离开房间

其中,改变房间状态的事件描述如下。

事件名描述
join room加入房间,由用户主动调用来触发
fail连接房间失败,具体原因需要根据抛出的错误描述信息来确定
success成功加入房间
leave room离开房间,由用户主动调用来触发
disconnect由于网络原因断开连接,这会触发断线重连流程
connected断线重连成功,重新进入房间
catch error实时房间发生错误,这个错误无法忽视和处理,必须离开房间

在前端 / 客户端,随时可以通过如下代码获取当前的房间状态。

var phase = room.phase;

也可以在加入房间时,添加监听器,以监听房间状态变化。

import { RoomPhase } from "white-web-sdk";

var joinRoomParams = {
    uuid: uuid,
    roomToken: roomToken,
};
whiteWebSdk.joinRoom(joinRoomParams, {
    onPhaseChanged: function(phase) {
        // 获取房间状态,根据房间状态执行业务代码
        switch (phase) {
            case RoomPhase.Connecting: {
                break;
            }
            case RoomPhase.Connected: {
                break;
            }
            case RoomPhase.Reconnecting: {
                break;
            }
            case RoomPhase.Disconnecting: {
                break;
            }
            case RoomPhase.Disconnected: {
                break;
            }
        }
    },
});

不可写状态

除了 Connected 状态外,其他状态都是不可写状态。这些状态意味着此时房间既没有准备好接收房间里其他人发出的信令,也没有准备好发送信令。此时,设备操作会被自动禁止。任何修改房间状态的操作都会报错。

因此,不写状态下,这些操作都是被禁止的。

  • 修改 Global State
  • 修改 Member State
  • 修改 View State
  • 插入图片
  • 插入 Plugin
  • 插入、修改、删除场景
  • 翻页 PPT
  • 发送自定义事件

因为异常流程离开房间

实时房间可能因为各种异常情况,不得不中断服务。为了保障你的应用程序的稳定性,在设计业务逻辑之初,就应该把异常流程考虑在呢。

你可以在加入房间时,通过添加监听器,来处理异常流程。

var joinRoomParams = {
    uuid: roomUUID,
    roomToken: roomToken,
};

whiteWebSdk.joinRoom(joinRoomParams, {

    onDisconnectWithError: function(err) {
        // 房间因为错误,和服务端断开连接
    },

    onKickedWithReason: function(err) {
        // 用户被踢出房间
    },
});

主动离开房间

如果不再使用白板了,就应该离开房间。Netless 互动白板不会自动离开房间。出于如下理由,我们不应该遗漏「离开房间」操作。

  • 不离开房间的话,浏览器将维持与 Netless 服务器的长连接。这将消耗前端用户设备的包括网络带宽在内的各种资源。
  • Netless 会对没有离开房间的用户继续收费。维持不必要的长连接将导致你所在的团队或公司产生不必要的开支。
room.disconnect().then(function() {
    // 成功离开房间
}).catch(function(err) {
    // 离开房间失败,获得报错 err
});

对于前端,如果用户直接关闭浏览器,或关闭当前网页 Tab,会自动释放房间,无需担心。

Last updated on 7/2/2020 by rick
← 配置云存储房间业务状态管理 →
  • 房间的状态
  • 不可写状态
  • 因为异常流程离开房间
  • 主动离开房间
Netless
接入即互动
产品
管理控制台官网网站Demo 体验Github
公司
加入我们服务条款隐私协议
联系方式
support@netless.link社区
Copyright © 2020 Netless