Skip to content

常见问题 FAQ

Q1: 如何判断消息是否发送成功?

A: 通过 WebSocket 发送后,等待服务器返回 cmd: 2 (SUCCEED) 响应。通过 HTTP API 发送,根据返回值判断。

Q2: 离线消息会丢失吗?

A: 不会。用户离线时消息会存入 Redis 队列(保留7天,最多1000条),上线后自动推送。

Q3: 撤回消息后对方还能看到吗?

A: 不能。撤回后会实时通知对方,前端需更新 UI 显示"撤回了一条消息"。

Q4: 如何实现"正在输入..."功能?

A: 可通过 WebSocket 发送自定义 cmd,如 typing_status,告知对方正在输入。

Q5: 支持图片、视频、文件发送吗?

A: 支持。先上传文件到 OSS,然后发送消息时 contentType 设为 image/video/filecontent 填写文件 URL。

Q6: 如何实现消息@功能?

A: 在消息 extra 字段中存储被@用户的ID列表,前端解析并高亮显示。


16. 测试建议

16.1 功能测试清单

  • [ ] WebSocket 连接建立
  • [ ] 心跳保活机制
  • [ ] 自动重连机制
  • [ ] 私聊消息发送与接收
  • [ ] 群聊消息发送与接收
  • [ ] 消息撤回(2分钟内)
  • [ ] 消息撤回(超时失败)
  • [ ] 已读未读状态同步
  • [ ] 未读消息数统计
  • [ ] 会话列表按置顶排序
  • [ ] 会话免打扰
  • [ ] 离线消息存储
  • [ ] 离线消息上线推送
  • [ ] 多设备同时在线
  • [ ] Token 过期处理

16.2 性能测试

  • 1000 用户同时在线
  • 高频消息发送(100条/秒)
  • 长时间连接稳定性(24小时)
  • 内存泄漏检测

17. 版本更新记录

v2.0 (2025-01-22)

新增功能

  • 消息撤回(2分钟内)
  • 已读/未读状态管理
  • 已读回执通知
  • 会话置顶功能
  • 会话免打扰
  • 离线消息存储与推送
  • 批量标记已读
  • 未读消息数统计

🔧 优化改进

  • 修复线程安全问题
  • Redis 缓存添加过期时间
  • 消息持久化优化
  • 虚拟线程支持

v1.0 (2025-01-19)

  • 基础 WebSocket 通信
  • 私聊、群聊、广播
  • 心跳保活
  • 消息持久化

Released under the MIT License.