# 文档 | 文档 | 用途 | |------|------| | [protocol.md](protocol.md) | 客户端 / 服务端 TCP 对接协议(命令、字段、错误码) | | [../server/sql/init.sql](../server/sql/init.sql) | 新库建表 | | [../server/sql/migrate.sql](../server/sql/migrate.sql) | 已有库升级 | ## Client 功能与 Server 命令 | 客户端 | 命令 | |--------|------| | 登录 | `Account` / `Login(2)` | | 注册账号 / 获取验证码 | `Account` / `SendCode(6)` → `Register(5)` | | 忘记密码 | `Account` / `SendCode(6)` scene=`reset` → `ResetPassword(7)` | | 修改密码 | `Account` / `ChangePassword(8)` | | 退出登录 | `Account` / `Logout(3)` | | 消息列表 | `Message` / `ConvList(10)` | | 打开会话 / 历史 | `Message` / `MsgHistory(11)` | | 发送 | `Message` / `Chat(4)`,收消息看推送 `ChatNotify(100)` | | 聊天图片/文件 | `Message` / `PutFile(29)` 取 COS 临时 token → 客户端直传 COS → `Chat(4)` `msg_type=3`;下载 `GetFile(30)` 或 CDN | | 好友列表 | `Friend` / `FriendList(9)`,在线变化看推送 `PresenceNotify(104)` | | 搜索/添加好友 | `Friend` / `SearchUser(14)` → `AddFriend(12)`,对方 `HandleFriendRequest(16)` | | 隐私设置 | `Account` / `GetPrivacy(17)` `SetPrivacy(18)` | | 表情包 | `Sticker` / `StickerPackList(19)` `StickerPack(20)` `GetSticker(21)`,发消息 `msg_type=2` | | 群聊 | `Group` / `GroupCreate(37)` `GroupList(51)` `GroupInfo(38)` …;进群 `GroupSearch(42)` `GroupJoin(43)`;消息仍走 `Chat(4)` 带 `group_id` | | 心跳 | `System` / `Heartbeat(1)` | | 被挤下线 | `System` 推送 `Kicked(101)` | ## 服务端 ```bash cd server mkdir -p build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release && cmake --build . ./server --init-db ../config/config.ini # 首次:建库建表后启动 ./server ../config/config.ini # 之后直接启动 ``` 监听地址、包长、MySQL、验证码回显见 `server/config/config.ini`。`[sms] echo_code` 联调可保持 `1`,生产改为 `0`。 客户端按上表对接:登录用 uid,会话/好友/消息走 ConvList、FriendList、MsgHistory、Chat,收消息处理 ChatNotify,被踢处理 Kicked。