textarea + WebSocket 实时同步、心跳、断线重连的便携式 Vue 组件。 复用 zTools2 的 /api/wb/* 与 /api/ws/wb/* 接口,与 zPDF_package 集成范式一致。 可独立运行或经 mainPage 构建期组件 import 集成(:locale + :boardId props)。
27 lines
1.0 KiB
Markdown
27 lines
1.0 KiB
Markdown
# zWhiteBoard
|
||
|
||
共享记事本前端 -- textarea + WebSocket 实时同步、心跳、断线重连。复用 zTools2 后端 API。
|
||
|
||
## 集成方式
|
||
|
||
便携式组件,两种运行模式:
|
||
|
||
- **独立运行**:`npm run dev` / `npm run build`,自带 i18n 与全局样式。
|
||
- **嵌入 mainPage**:作为 git submodule 挂在 zMainPage `third_party/zWhiteBoard`,经构建期组件 import 集成(非 iframe)。mainPage 侧包装器 `Whiteboard.vue` 套 `PageShell` 并透传 `:locale` / `:boardId` props。
|
||
|
||
## 后端接口(zTools2 提供,不改动)
|
||
|
||
- `GET /api/wb/{id}` -- 预取白板内容(不存在则服务端新建)
|
||
- `WS /api/ws/wb/{id}` -- 实时同步:hello / edit / ping / clear(C->S);init / pong / update / cleared / error(S->C)
|
||
|
||
全量文本同步(非 OT/CRDT,last-writer-wins),400ms debounce,3s 心跳,2s 固定重连。
|
||
|
||
## 开发
|
||
|
||
```bash
|
||
npm install
|
||
npm test # 单元测试
|
||
npm run dev # 开发服务器(代理 /api -> 本地 zTools2:6867,含 ws:true)
|
||
npm run build # 产物在 dist/
|
||
```
|