Netless

Netless

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

›功能介绍

接入准备

  • 前提条件
  • 开源项目
  • 快速调试
  • 版本历史

快速开始

  • 原生 JavaScript
  • React

进阶教程

  • 安装
  • 实时房间
  • 教具
  • PPT 与页面管理
  • 视角
  • 禁止操作
  • 自定义行为
  • 回放

初始化参数

  • SDK参数
  • 房间参数
  • 回放参数

功能介绍

  • 教具操作
  • 视角操作
  • 页面(场景)管理
  • 状态监听
  • 白板操作
  • 自定义事件
  • 鼠标位置同步
  • 文档转换
  • 回放功能
  • 大课只读
  • 撤回与重做
  • 集成白板插件

迁移与升级

  • 2.9.0 迁移指南
  • 2.8.0 迁移指南

状态监听

房间状态

定义:一个房间,可以包括很多信息,例如房间成员,用户教具,当前页面信息,页面缩放信息,主播信息等。sdk将这些信息统称为房间状态。

房间状态,存储在room的state,以及player的state属性中。

房间状态,存在一个DisplayerState基础结构和两个RoomState,PlayerState扩展结构,分别对应room,player的state属性结构。

TypeScript 定义

DisplayerState 及其相关定义

///Displayer.d.ts

//均为只读属性
export type DisplayerState = {
    // 全局状态,所有人可读
    readonly globalState: GlobalState;
    // 房间成员列表
    readonly roomMembers: ReadonlyArray<RoomMember>;
    // 当前目录信息
    readonly sceneState: SceneState;
};
  • 相关类定义
///Displayer.d.ts

//基础 Object,sdk 会有部分私有字段
export type GlobalState = {};

// 用户信息
export type RoomMember = {
    //白板用户 id,从 0 递增
    readonly memberId: number;
    //用户的教具状态
    readonly memberState: MemberState;
    //用户信息,在初始化时传入的用户自定义信息,参考[初始化参数-房间参数]文档
    readonly payload: any;
};

// 参考[教具操作]文档
type MemberState

// 参考[页面(场景)管理]文档
type SceneState

RoomState 定义

///Room.d.ts

type RoomState = {
    // 可以通过 API 修改该属性
    readonly globalState: GlobalState;
    // 见 GlobalState 定义
    readonly roomMembers: ReadonlyArray<RoomMember>;
    // 可以通过 [页面(场景)管理] 中的API 修改
    readonly sceneState: SceneState;
    // 可以通过 [教具使用] 中的 API 修改
    readonly memberState: MemberState;
    // 可以通过 [视角操作] 中的 API 修改
    readonly broadcastState: Readonly<BroadcastState>;
    // 可以通过 [视角操作] 中的 API 修改
    readonly zoomScale: number;
};

PlayerState 定义

///Player.d.ts

export type PlayerState = {
    // 该属性可以通过[回放功能] 中的 API 修改
    readonly observerMode: ObserverMode;
    readonly globalState: GlobalState;
    readonly roomMembers: ReadonlyArray<RoomMember>;
    readonly sceneState: SceneState;
};

状态获取

// 获取全局状态
var globalState = room.state.globalState;
// 获取当前用户教具状态
var memberState = room.state.memberState;
// 获取场景状态
var sceneState = room.state.sceneState;
// 主播用户信息
var broadcastState = room.state.broadcastState;

// player 类似

状态监听

实时房间状态(RoomState)

当房间状态(用户加入退出,白板页面(场景),用户教具变化,主播,全局状态)发生改变时,sdk 会主动回调在joinRoom时,callbacks参数中的onRoomStateChanged方法。

更多回调参数使用,请阅读初始化参数-房间参数。

//... 初始化 whiteWebSdk,获取房间鉴权信息
whiteWebSdk.joinRoom({uuid: uuid, roomToken: roomToken}, {
    // 状态变化回调时,modifyRoomState 只会包含发生了改变的 roomState 字段。
    // 对应字段里的内容,都会完整传递
    onRoomStateChanged: function(modifyRoomState) {
        // 只有发生改变的字段,才存在
        if (modifyRoomState.globalState) {
            // 完整的 globalState
            var newGlobalState = modifyRoomState.globalState;
        }
        if (modifyRoomState.memberState) {
            var newMemberState = modifyRoomState.memberState;
        }
        if (modifyRoomState.sceneState) {
            var newSceneState = modifyRoomState.sceneState;
        }
        if (modifyRoomState.broadcastState) {
            var broadcastState = modifyRoomState.broadcastState;
        }
    },
    // 白板连接状态改变, 具体状态如下:
    onPhaseChanged: function(phase) {
        // "connecting",
        // "connected",
        // "reconnecting",
        // "disconnecting",
        // "disconnected",
    },
    // ...其他回调
}).then(function(room) {
    // room 房间操作
})

回放房间状态(PlayerState)

与Room相似,在使用sdk的replayRoom方法创建Player实例时,callbacks参数中也存在类似onRoomStateChanged方法的onPlayerStateChanged。 当回放过程中,playerState发生变化,sdk都会主动回调传入的该方法。

//... 初始化 whiteWebSdk,获取房间鉴权信息
whiteWebSdk.replayRoom({
    room: roomUUID,
    roomToken: roomToken
}, {
    onPlayerStateChanged: function(modifyState) {
        // 与 roomState 类似
    },
    onScheduleTimeChanged: function(scheduleTime) {
        // 时间进度回调,毫秒,scheduleTime 为 number
    },
    onPhaseChanged:function(phase) {
        // 参考[初始化参数-回放参数]文档中 onPhaseChanged 内容
    }
    // ...其他回调
}).then(function (player){
    //player 操作
})

更多回调参数使用,请阅读初始化参数-回放参数

Last updated on 6/16/2020 by rick
← 页面(场景)管理白板操作 →
  • 房间状态
  • TypeScript 定义
    • DisplayerState 及其相关定义
    • RoomState 定义
    • PlayerState 定义
  • 状态获取
  • 状态监听
    • 实时房间状态(RoomState)
    • 回放房间状态(PlayerState)
Netless
接入即互动
产品
管理控制台官网网站Demo 体验Github
公司
加入我们服务条款隐私协议
联系方式
support@netless.link社区
Copyright © 2020 Netless