介绍
整体架构
客户端(client/)
Flutter 跨平台 App,版本 5.0.0,支持 iOS、Android、macOS、Windows。
主要功能模块(client/lib/features/):
- auth — 登录、注册
- chat — 聊天核心(会话列表、发消息、表情、群聊)
- contacts — 联系人
- moments — 朋友圈动态
- wallet — 钱包(充值、提现、转账、红包)
- call — 音视频通话(声网 Agora)
- meeting — 会议
- settings — 设置、隐私、设备管理
- home — 底部 Tab 导航
技术要点:
- Riverpod 管状态,GoRouter 管路由
- Isar 本地数据库,离线也能看历史消息
- WebSocket 实时收消息,断了会自动重连
- Dio 调后端 API
- 支持 端到端加密(E2EE)、推送通知、后台保活
你最近打开的文件(emoji_picker.dart、chat_page.dart)就是聊天和表情相关功能。
后端(backend/)
Go 写的服务端,模块名 gaoranim。
三层存储:
- MySQL — 用户、群聊、钱包等结构化数据
- MongoDB — 消息(按月分表,量大)
- Redis — 缓存、在线状态、消息队列、限流
核心目录:
主要 API 分组(/api/v1/):
/auth— 登录注册、扫码登录/user— 用户资料、隐私、设备、推送/chat— 会话、群管理/message— 发消息、撤回、已读/wallet— 充值提现转账红包/call//meeting— 通话和会议/admin— 管理后台专用接口
管理后台(admin/)
Vue3 + Vite + TypeScript,给运营人员用。
典型页面(admin/src/views/):
- dashboard — 数据看板
- system — 用户、会话、举报、系统设置
- message — 消息管理
- moment — 动态审核
- wallet — 充值提现、红包转账
- call — 通话记录
你正在看的 admin/src/store/modules/user.ts 是管理员的登录状态和权限管理。
客服后台(admin-kf/)
更轻量的 Vue3 项目,专门给客服人员处理用户咨询,依赖比 admin 少很多。
数据怎么流转(以发消息为例)
- 用户在 App 输入消息 →
chat_page.dart - 先写入本地 Isar → 界面立刻显示
- 通过 HTTP 发给后端 →
message_handler.go - 后端写入 MongoDB,通过 WebSocket 推给在线用户
- 离线用户走 APNs / FCM 推送
- 对方 App 收到 WebSocket 消息 → 更新界面
项目里还有这些
总结
这是一个功能很全的 IM 产品源码,不只是聊天,还包含:
- 群聊 / 频道 / 端到端加密
- 朋友圈
- 钱包支付(微信/支付宝)
- 音视频通话 + 会议
- 双管理后台(运营 + 客服)
- 多端支持(手机 + 桌面)
如果你想深入某一块(比如聊天怎么发消息、钱包怎么扣款、后台怎么登录),直接说模块名,我可以带你读具体代码









评论(0)