基于 Vue 3 + Vite 前端 + Node.js WebSocket 服务端实现的多人实时协同白板。
oz2/
├── server/ # WebSocket 服务端(Node.js + ws)
│ ├── index.js
│ └── package.json
└── frontend/ # 前端(Vue 3 + Vite)
├── src/
│ ├── main.js
│ ├── App.vue
│ └── components/Whiteboard.vue
├── index.html
├── vite.config.js
└── package.json
cd server
npm install
npm start
# 默认监听 ws://localhost:3001cd frontend
npm install
npm run dev
# 默认访问 http://localhost:5173Vite 开发模式已配置代理,
/ws请求会转发到ws://localhost:3001,无需手动改端口。
在浏览器打开同一个 URL 即可加入同一房间:
http://localhost:5173/?room=my-room
- 不同用户访问相同的
?room=参数即可实时看到彼此绘图。 - 省略参数时默认进入
default房间。 - 新加入者会自动收到当前房间的完整笔画历史。
| 功能 | 说明 |
|---|---|
| 实时同步 | WebSocket 广播,所有客户端看到相同内容 |
| 笔画历史 | 新用户加入后自动同步已有内容 |
| 颜色 / 粗细 | 工具栏可调整 |
| 清空白板 | 同步给房间内所有用户 |
| 断线重连 | WebSocket 断开后 3 秒自动重连 |
| 触屏支持 | 支持移动端触摸绘图 |
- 前端构建:
cd frontend && npm run build,产物在frontend/dist/。 - 将
dist/托管到任意静态服务器(Nginx、Vercel 等)。 - 服务端部署到 Node.js 环境,设置
PORT环境变量。 - 生产环境前端修改
Whiteboard.vue中的wsUrl()函数,改为服务端实际地址。