Room

  • Web

更新时间不可用

Whiteboard Web SDK 2.16.59 公开 interface。

TypeScript
export declare interface Room extends Displayer

成员

继承自 Displayer

Properties

uuid

readonly uuid: string;

Text
房间的 ``uuid``,用于唯一标识该房间。

uid

readonly uid: string;

Text
加入该房间的用户的唯一标识符

session

readonly session: string;

Text
房间当前的 Session 的 ``uuid``。会被上报作为日志字段(如果开启了自动日志上报功能)。如果当前尚未与服务器建立连接,则为 ``undefined``。

roomToken

readonly roomToken: string;

Text
房间 Token,即加入房间时传入的字段。

phase

readonly phase: RoomPhase;

Text
房间连接所处的阶段

calibrationTimestamp

readonly calibrationTimestamp: number;

Text
与服务器时钟校准后的当前时间戳,单位为毫秒

state

readonly state: RoomState;

Text
业务状态
阅读 [《房间与回放的业务状态管理》](/javascript-zh/home/business-state-management) 、[《房间业务状态管理》](/document-zh/home/business-state-management) 以了解更多。

isWritable

readonly isWritable: boolean;

Text
房间是否「可写」

canUndoSteps

readonly canUndoSteps: number;

Text
可撤销步骤。即此时此刻,还可以调用多少次 ``room.undo()`` 方法。

canRedoSteps

readonly canRedoSteps: number;

Text
可重做步骤。即此时此刻,还可以调用多少次 ``room.redo()`` 方法。

disableDeviceInputs

disableDeviceInputs: boolean;
Text
是否禁止设备操作。
注意区分「只读模式」与「禁止设备操作」,具体参考进阶教程[《禁止设备操作|禁止操作》](/javascript-zh/home/disable#禁止设备操作)。

disableEraseImage

disableEraseImage: boolean;
Text
是否禁止橡皮擦除图片

disableSerialization

disableSerialization: boolean;
Text
是否禁止如下方法(默认值是 ``true``)。可修改。

- ``room.redo``
- ``room.undo``
- ``room.duplicate``
- ``room.copy``
- ``room.paste``

房间内所有人的 ``white-web-sdk`` 的版本必须不低于 ``2.9.3`` 时,才能将该值设为 ``false``。房间内任何一个人将该值设为 ``false``,都会导致房间内低于 ``2.9.3`` 的用户前端报错且不能正常使用。

timeDelay

timeDelay: number;
Text
主动延迟接收的远端消息,单位是毫秒,默认值 ``0``。将该值设置成大于 ``0`` 的数字,可以人为造成类似网络时延的效果。可修改。

syncMode

syncMode: boolean;
Text
默认情况下,所有同步消息会按比较平滑的速度处理,以此保证观感的流畅性。
如果设置此项为 ``true``,则所有消息一经收到立刻处理,从而保证同步的实时性。

useNativeClipboard

useNativeClipboard: boolean;
Text
是否使用原生剪贴板。
设为 ``true`` 后,快捷键里的复制和粘贴将失效而使用原生 ``copy`` ``paste`` 事件。
此功能需要浏览器支持以及用户授予剪贴板权限,如果失败,将自动回退到虚拟剪贴板实现。

createInvisiblePlugin

createInvisiblePlugin<K extends string, A extends Object, MA extends Object, P extends InvisiblePlugin<A, MA>>(pluginClass: InvisiblePluginClass<K, A, MA, P>, attributes: A): Promise<InvisiblePlugin<A, MA>>;

callbacks

readonly callbacks: Callbacks<CALLBACKS>;

observerId

readonly observerId: number;

region

readonly region: string;

slice

readonly slice: string;

version

readonly version: string;

deviceType

readonly deviceType: DeviceType;

screenType

readonly screenType: ScreenType;

enableWriteNow

readonly enableWriteNow: boolean;

handToolKey

readonly handToolKey: string | undefined;

views

readonly views: Views;

useMobXState

readonly useMobXState: boolean;

useMultiViews

readonly useMultiViews: boolean;

handToolActive

handToolActive: boolean;

disableOthersSelectingBox

disableOthersSelectingBox: boolean;

disableCameraTransform

disableCameraTransform: boolean;

commandWheelToZoom

commandWheelToZoom: boolean;

dynamicConfig

readonly dynamicConfig?: DynamicConfigSnapshot;

加入房间时完成求值的远端参数快照。

dynamicConfigState

readonly dynamicConfigState?: DynamicConfigState;

本次配置来源、运行时匹配和失败回退原因;不是配置文件原文。

Methods

setWritable

setWritable(isWritable: boolean): Promise<void>;
Text
修改 ``room.isWritable`` 的值。
该操作会向服务器发起请求,因此会返回一个 ``Promise`` 对象。注意通过 ``.catch()`` 的方式处理异常流程,因为请求可能被服务器拒绝,或失败。
Returns
返回类型描述

Promise<void>

表格内容超出当前宽度,可横向滚动查看更多列。

setGlobalState

setGlobalState(modifyState: Partial<GlobalState>): GlobalState;
Text
用于修改房间的 ``globalState`` 的字段。可以通过如下方法修改特定字段。

@example
```typescript
room.setGlobalState({
    foobar: "hello world",
});
```

也可以通过将某个字段置为 ``undefined``,来删掉该字段。

@example
```typescript
room.setGlobalState({
    foobar: undefined,
});
```
Returns
返回类型描述

GlobalState

表格内容超出当前宽度,可横向滚动查看更多列。

setMemberState

setMemberState(modifyState: Partial<MemberState>): MemberState;
Text
用于修改房间的 ``memberState`` 的字段。可以通过如下方法修改特定字段。

@example
```typescript
room.setMemberState({
    foobar: "hello world",
});
```

@example
也可以通过将某个字段置为 ``undefined``,来删掉该字段。

```typescript
room.setMemberState({
    foobar: undefined,
});
```
Returns
返回类型描述

MemberState

表格内容超出当前宽度,可横向滚动查看更多列。

setViewMode

setViewMode(viewMode: ViewMode): void;
Text
修改房间的 ``room.state.broadcastState.mode`` 的值。会改变自己或房间内其他人的视角模式。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

setScenePath

setScenePath(scenePath: string): void;
Text
修改当前场景地址,会将切换当前房间的场景。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

setSceneIndex

setSceneIndex(index: number): void;
Text
修改当前场景的索引号,会将切换当前房间的场景。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

syncBlockTimestamp

syncBlockTimestamp(timestamp: number): void;
Text
同步阻塞时间戳,以人为制造时延
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

stopBlockTimestamp

stopBlockTimestamp(): void;
Text
停止通过同步阻塞时间戳来人为制作间延
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

dispatchMagixEvent

dispatchMagixEvent(event: string, payload: any): void;
Text
向房间内广播自定义事件。其中,第一参数 ``event`` 是事件的名称,房间内其他成员可以通过它注册监听事件。
第二参数 ``payload`` 是负载,可以是任意类型的值,可根据具体业务自行设计。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

putScenes

putScenes(path: string, scenes: ReadonlyArray<SceneDefinition>, index?: number): void;
Text
在房间中插入场景。参考[《插入新场景|场景管理》](/javascript-zh/home/scenes-management#插入新场景)。
@param path 想要插入到的场景组地址
@param scenes 场景描述列表
@param index 从哪个索引所在位置插入
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

cleanCurrentScene

cleanCurrentScene(retainPpt?: boolean): void;
Text
清理当前场景内所有内容。第一参数 ``retianPpt``
@param retainPpt 表明是否保留 PPT 背景不被清理,默认值是 ``true``
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

removeScenes

removeScenes(path: string): void;
Text
在房间中删除场景。参考[《删除场景|场景管理》](/javascript-zh/home/scenes-management#删除场景)。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

moveScene

moveScene(originalPath: string, targetPath: string): void;
Text
在房间中移动场景。参考[《移动场景|场景管理》](/javascript-zh/home/scenes-management#移动场景)。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

exportScene

exportScene(scenePath: string): Promise<Blob>;
Text
导出特定场景路径的板书内容(包含 ppt 内容),可以直接保存为二进制文件(废弃)。
@param scenePath 需要导出场景的路径,必须是 ``ScenePathType`` 为 ``page`` 的路径。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

importScene

importScene(dir: string, payload: Blob, overrideName?: string): Promise<SceneDefinition>;
Text
导入之前导出的板书内容(废弃)。
@param dir 当前板书内容,需要插入的场景目录位置,该目录的 ScenePathType 可以为空,但是不能为 conflict,这回导致该路径无法成功插入新场景。
@param payload 二进制文件的文件句柄指向
@param overrideName 不使用文件内的 name,改为覆盖指定场景
@returns 板书内部的内容,一定会存在 name 字段,该字段不可更改;最后插入的板书路径为 dir + name。如果想修改板书路径,可以再调用 mvScene API 进行修改。
Returns
返回类型描述

Promise<SceneDefinition>

表格内容超出当前宽度,可横向滚动查看更多列。

insertImage

insertImage(imageInfo: ImageInformation): void;
Text
在当前场景中插入图片
该操作往往需要和 ``room.completeImageUpload`` 配合使用,具体例子可参考[《插入图片|教具》](/javascript-zh/home/tools#插入图片)。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

lockImage

lockImage(uuid: string, locked: boolean): void;
Text
改变图片的锁定状态。若图片被锁定,则无法被框选、无法被拖动、无法被改变大小
@param uuid 图片的 UUID
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

completeImageUpload

completeImageUpload(uuid: string, src: string): void;
Text
设置图片资源。第一参数 ``uuid`` 是图片的唯一标识符,应该与 ``room.insertImage`` 中传入的 ``uuid`` 字段相同。
第二参数 ``src`` 是图片资源的 URL。具体例子可参考[《插入图片|教具》](/javascript-zh/home/tools#插入图片)。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

getImagesInformation

getImagesInformation(scenePath: string): ImageInformation[];
Text
导出特定场景的图片信息,注意这些信息可能与插入时填写的不同。
@param scenePath 需要导出图片信息的场景路径,必须是 ``ScenePathType`` 为 ``page`` 的路径。
Returns
返回类型描述

ImageInformation[]

表格内容超出当前宽度,可横向滚动查看更多列。

insertPlugin

insertPlugin(kind: string, description?: PluginDescription): Identifier;
Returns
返回类型描述

Identifier

表格内容超出当前宽度,可横向滚动查看更多列。

removePlugin

removePlugin(identifier: Identifier): boolean;
Returns
返回类型描述

boolean

表格内容超出当前宽度,可横向滚动查看更多列。

updatePlugin

updatePlugin(identifier: Identifier, description: PluginDescription): boolean;
Returns
返回类型描述

boolean

表格内容超出当前宽度,可横向滚动查看更多列。

getPluginAttributes

getPluginAttributes(identifier: Identifier): any | undefined;
Returns
返回类型描述

any | undefined

表格内容超出当前宽度,可横向滚动查看更多列。

getPluginRectangle

getPluginRectangle(identifier: string): Rectangle | undefined;
Returns
返回类型描述

Rectangle | undefined

表格内容超出当前宽度,可横向滚动查看更多列。

duplicate

duplicate(): void;
Text
复刻当前选择工具所选的所有组键件。只有在 ``room.disableSerialization`` 为 ``false`` 的时候可调用。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

copy

copy(): void;
Text
复制当前选择工具所选的所有组键件。只有在 ``room.disableSerialization`` 为 ``false`` 的时候可调用。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

paste

paste(): void;
Text
粘贴上一次复制的组件。只有在 ``room.disableSerialization`` 为 ``false`` 的时候可调用。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

undo

undo(): number;
Text
撤回上一个动作。只有在 ``room.disableSerialization`` 为 ``false`` 的时候可调用。
Returns
返回类型描述

number

表格内容超出当前宽度,可横向滚动查看更多列。

redo

redo(): number;
Text
重做上一个动作。只有在 ``room.disableSerialization`` 为 ``false`` 的时候可调用。
Returns
返回类型描述

number

表格内容超出当前宽度,可横向滚动查看更多列。

clearUndoHistory

clearUndoHistory(includeRedo?: boolean): void;
Text
清空可撤回的历史记录, 令 ``canUndoSteps`` 立刻等于 0。
@param includeRedo 是否同时清空重做的记录,默认值是 ``true``
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

delete

delete(): void;
Text
删除当前选择工具所选的所有组件。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

lockImages

lockImages(locked: boolean): void;
Text
修改当前选中图片的锁定状态
@param locked 是否锁定图片,当图片被锁定时,无法删除、移动、放缩。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

moveSelectedComponentsToTop

moveSelectedComponentsToTop(): void;
Text
将当前选中的组件移动到顶层
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

moveSelectedComponentsToBottom

moveSelectedComponentsToBottom(): void;
Text
将当前选中的组件移动到底层
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

insertText

insertText(x: number, y: number, textContent?: string): Identifier;
Text
在指定位置插入文字
@param x 第一个字的的左侧边中点,世界坐标系中的 x 坐标
@param y 第一个字的的左侧边中点,世界坐标系中的 y 坐标
@param textContent 初始化文字的内容,不传则为空
@returns 该文字的标识符
Returns
返回类型描述

Identifier

表格内容超出当前宽度,可横向滚动查看更多列。

updateText

updateText(identifier: Identifier, textContent: string): void;
Text
编辑指定文字的内容
@param identifier 文字的标识符。为 ``insertText()`` 的返回值。
@param textContent 文字要改成的内容
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

updateSelectedText

updateSelectedText(format: TextFormat): void;
Text
修改当前被选中的 text 的状态
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

pptNextStep

pptNextStep(): void;
Text
PPT 翻页到下一页。如果当前 PPT 没有动画,则切换到顺位索引 +1 的场景,如果有动画,则播放下一个动画。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

pptPreviousStep

pptPreviousStep(): void;
Text
PPT 翻页到前一页。如果当前 PPT 没有动画,则切换到顺位索引 -1 的场景,如果有动画,则切换到上一个动画播放完毕的样子。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

disconnect

disconnect(options?: RoomDisconnectOptions): Promise<void>;
Text
令房间断开连接。这是一个异步方法,会返回 ``Promise`` 对象。
Returns
返回类型描述

Promise<void>

表格内容超出当前宽度,可横向滚动查看更多列。

uploadLocalLogs

uploadLocalLogs(): Promise<WhiteLocalLogUploadResult>;

上传本地日志;日志运行时和上传开关均需可用,enabled/ enabledUpload 未设置为 false 时默认尝试开启。通过返回结果和状态事件观察上传。

Text
主动上传当前房间关联的本地日志。
Returns
返回类型描述

Promise<WhiteLocalLogUploadResult>

表格内容超出当前宽度,可横向滚动查看更多列。

refreshViewSize

refreshViewSize(): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

setCameraBound

setCameraBound(cameraBound: CameraBound): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

createScenesCallback

createScenesCallback(path: string, callbacks?: Partial<ScenesCallbacks>): ScenesCallbacksNode | null;
Returns
返回类型描述

ScenesCallbacksNode | null

表格内容超出当前宽度,可横向滚动查看更多列。

memberState

memberState(memberId: number): MemberState;
Returns
返回类型描述

MemberState

表格内容超出当前宽度,可横向滚动查看更多列。

moveCamera

moveCamera(camera: Partial<Camera> & Readonly<{ animationMode?: AnimationMode; }>): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

moveCameraToContain

moveCameraToContain(rectangle: Rectangle & Readonly<{ animationMode?: AnimationMode; }>): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

bindHtmlElement

bindHtmlElement(element: HTMLDivElement | null): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

getInvisiblePlugin

getInvisiblePlugin<A extends Object, MA extends Object>(kind: string): InvisiblePlugin<A, MA> | null;
Returns
返回类型描述

InvisiblePlugin<A, MA> | null

表格内容超出当前宽度,可横向滚动查看更多列。

convertToPointInWorld

convertToPointInWorld(point: { x: number; y: number; }): { x: number; y: number; };
Returns
返回类型描述

{ x: number; y: number; }

表格内容超出当前宽度,可横向滚动查看更多列。

scenePreview

scenePreview(scenePath: string, div: HTMLElement, width?: number, height?: number, engine?: RenderEngine): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

generateScreenshot

generateScreenshot(scenePath?: string, width?: number, height?: number): Promise<string>;
Returns
返回类型描述

Promise<string>

表格内容超出当前宽度,可横向滚动查看更多列。

fillSceneSnapshot

fillSceneSnapshot(scenePath: string, div: HTMLElement, width?: number, height?: number, engine?: RenderEngine): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

screenshotToCanvas

screenshotToCanvas(context: CanvasRenderingContext2D, scenePath: string, width: number, height: number, camera: Camera, ratio?: number): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

screenshotToCanvasAsync

screenshotToCanvasAsync(context: CanvasRenderingContext2D, scenePath: string, width: number, height: number, camera: Camera, ratio?: number, timeout?: number): Promise<void>;
Returns
返回类型描述

Promise<void>

表格内容超出当前宽度,可横向滚动查看更多列。

getBoundingRect

getBoundingRect(scenePath: string): Rectangle;
Returns
返回类型描述

Rectangle

表格内容超出当前宽度,可横向滚动查看更多列。

addMagixEventListener

addMagixEventListener(event: string, listener: EventListener, options?: MagixEventListenerOptions): void;
addMagixEventListener(event: string, listener: EventsListener, fireInterval: number): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

removeMagixEventListener

removeMagixEventListener(event: string, listener?: EventListener): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

waitMagixEvent

waitMagixEvent(filter: EventFilter): Promise<Event>;
Returns
返回类型描述

Promise<Event>

表格内容超出当前宽度,可横向滚动查看更多列。

scalePptToFit

scalePptToFit(animationMode?: AnimationMode): void;
Returns
返回类型描述

void

表格内容超出当前宽度,可横向滚动查看更多列。

scenePathType

scenePathType(path: string): ScenePathType;
Returns
返回类型描述

ScenePathType

表格内容超出当前宽度,可横向滚动查看更多列。

entireScenes

entireScenes(): SceneMap;
Returns
返回类型描述

SceneMap

表格内容超出当前宽度,可横向滚动查看更多列。

getScene

getScene(path: string): WhiteScene | undefined;
Returns
返回类型描述

WhiteScene | undefined

表格内容超出当前宽度,可横向滚动查看更多列。