前提条件

你可以通过阅读密钥说明了解更多 Token 相关。

集成SDK
npm 方式
  1. 通过包管理工具 npm 下载 SDK。不指定版本表示下载最新版本。
npm i @volcengine/white-board-manage
  1. 在实现功能的 js 文件中引入 SDK。
import Board from '@volcengine/white-board-manage';
javascript
离线方式
  1. 下载 lib 包。
  2. 在实现功能的 js 文件中引入 SDK。
import Board from '${you_path}/lib/white-board-manage';
javascript
实现功能
基础白板使用 API 时序图

alt

1. 创建和初始化白板

调用 createWhiteBoardRoom 创建一个本地 白板房间 对象。

Board.init({ 
  domId: 'board',
  appId,
});
javascript

参考 开通服务 获取 appId。

2. 加入白板房间

调用 whiteBoardRoom.joinRoom 加入房间。如果当前房间还没有白板会自动创建。
白板服务在当前用户加入白板房间后开始计费,直到该用户调用 leaveRoom 退出房间后停止计费。建议在即将使用白板前创建白板实例。并结束使用后及时销毁白板实例。

 const whiteBoardRoom = await Board.joinRoom({
   roomId,
   userId,
   token,
 });
javascript

根据实际应用需要,在初始化 WhiteBoard 后监听想要关注的事件回调。例如,在进房成功后获取白板对象信息、白板改变、回放状态变化等。

whiteBoardRoom.on(WhiteBoardRoomEventsTypes.onError, function (res) {
  if (res.errorCode === ErrorCode.DUPLICATE_LOGIN) {
    message.error('您已被踢出房间');
   // 根据实际业务需要做
  }
});

// 监听当前白板改变,获取当前被激活白板。
whiteBoardRoom.on(
      WhiteBoardRoomEventsTypes.onCurrentWhiteBoardChanged,
      async ({ userId, boardId, whiteBoard }) => {
      },
    );
// 监听回放状态改变    
whiteBoardRoom.on(WhiteBoardRoomEventsTypes.onPlaybackStateChanged,({state, data}) => {});
javascript
3. 使用白板
编辑工具

调用 WhiteBoard 类的 setEditType 方法设置工具类型,目前支持工具类型如下:

pointer           // 选取图元  ToolMode.POINTER
pencilBrush  //涂鸦画笔  ToolMode.PENCIL_BRUSH
textbox         // 文本 ToolMode.TEXT
circle            // 圆 ToolMode.CIRCLE
line               // 直线 ToolMode.LINE
rect               // 矩形 ToolMode.RECT
arrow             // 箭头 ToolMode.ARROW
eraser          // 橡皮擦  ToolMode.ERASER
zoom            // 平移 ToolMode.zoom
whiteBoard.setEditType(key);


//show case
import { IWhiteBoard, ToolMode } from '@volcengine/white-board-manage'

const [whiteBoard, setWhiteBoard] = setState<IWhiteBoard>()

whiteBoardRoom.on(WhiteBoardRoomEventsTypes.onCurrentWhiteBoardChanged,({ userId, boardId, whiteBoard }) => {
 setWhiteBoard(whiteBoard);
});


//tool_bar.tsx
return(
   <button 
     onClick={()=>whiteBoard.setEditType(ToolMode.PENCIL_BRUSH)}
    >
        涂鸦工具
    </button>
)

javascript
页面管理
  whiteBoard.createPages(
      [
        {
          pageId: `${uuid()}`,
        },
      ],
      {
        autoFlip: true,
      },
  );
  const onCreatePagesEvent: IWhiteBoardEvents['onCreatePagesProgress'] = e => {
        if (e.progress === 1) {
          console.log('开始创建');
        }
        if (e.progress === 100) {
          console.log('全部创建成功');
        }
      };
javascript
4. 结束使用白板

调用 leaveRoom离开房间。调用后将同时销毁 createWhiteBoardRoom 创建的白板房间实例。

const leaveRoom = () => {
    if(boardRoom){
      boardRoom.leaveRoom();
    }
};
javascript