1.7 KiB
1.7 KiB
01 - 整体架构与核心概念
目标与范围
- 目标:在 VNC/远程桌面、内网隔离等场景下,提供基于浏览器的轻量数据传输能力,通过 WebSocket 实现多端实时同步。
- 范围:文本、文件(分片)、图片预览、剪贴板读取/粘贴、在线用户列表、历史记录(本地)。
架构概览
发送端浏览器(Vue) <——WebSocket(STOMP/SockJS)——> 服务端(Spring Boot) <——> 接收端浏览器(Vue)
│
└—— 同一房间号(roomCode)隔离广播
核心概念
- 房间(Room):数据传输隔离空间,通过 6 位数字
roomCode标识。 - 会话(Session):WebSocket 连接实例,通常以
sessionId识别。 - 消息(Message):传输数据单元,支持
TEXT/FILE/IMAGE/SYSTEM/CHUNK。
关键数据流
- 加入房间:客户端连接成功后发送
/app/room/{roomCode}/join→ 服务端更新房间用户 → 广播SYSTEM(USER_JOIN + userList)到/topic/room/{roomCode}。 - 发送消息:客户端发送
/app/room/{roomCode}/message(TEXT/FILE/IMAGE/SYSTEM)→ 服务端补齐时间戳并广播到/topic/room/{roomCode}。 - 文件分片:客户端发送
/app/room/{roomCode}/file/chunk(CHUNK)→ 服务端转发到/topic/room/{roomCode}/file/{fileId}(或同房间通道内约定字段分发)。
非功能性要求(NFR)
- 可用性:断线自动重连;重连后需重新 join。
- 性能:大文本/大文件分片;限制单文件大小与分片大小;避免 UI 卡顿(增量渲染/节流)。
- 安全:默认不落库;房间过期;XSS 防护;可选 WSS/Origin 校验。