可以,按这个顺序做比较稳:
- 连接层:PWA 只和你本机的 Bridge 通信,用 WebSocket 收消息,用 HTTP 发消息和上传文件。登录页拿到的地址和 Token 存在本地,掉线后自动重连。
- 会话列表:首屏先读 IndexedDB 缓存再增量同步,离线也能看历史记录。
- 消息渲染:文字、图片、语音分成三种气泡。图片先给缩略图,点开后在当前内容列里展开;语音点播放后展开波形和转写。
- 输入区:Enter 发送,Shift+Enter 换行。图片支持选择、粘贴和拖拽。语音用 MediaRecorder 录制,由 Bridge 侧转成 QQ 能用的格式。
- PWA 外壳:manifest 加 Service Worker,缓存静态资源,可以安装到桌面和手机主屏。
另外 iOS Safari 对后台推送和录音格式有限制,后面单独处理。