《IM|即时通讯|聊天|Go高并发架构|单聊|群聊|安卓、iOS、H5》是一本聚焦即时通讯系统开发的实战指南,核心围绕Go语言高并发架构设计与多端适配展开。书中系统讲解单聊、群聊等核心聊天功能的实现逻辑,深入剖析Go语言在处理高并发场景下的技术优势,覆盖消息推送、实时通信、多端同步等关键环节。无论是安卓、iOS还是H5平台,读者都能学习到适配不同终端的IM开发技巧,解决即时通讯系统中的性能瓶颈与稳定性问题。本书适合IM开发工程师、Go语言爱好者及希望掌握高并发架构的技术人员,是构建高效稳定即时通讯应用的实用参考。
*内容摘要,帮助您快速了解要点前端H5演示:
https://uuchat.waps.eu.org
测试账号: user02
测试密码: 000000
安卓下载: https://uuchat.waps.eu.org/uuchat.apk
视频演示: https://uuchat.waps.eu.org/demo.mp4
后台演示: https://uuchatad.waps.eu.org/
管理账号: admin
管理密码: admin000000
## 1. 项目概述
### 1.1 项目名称与类型
- **项目名称**: UUChat
- **项目类型**: 即时通讯应用 (Web And App)
- **目标**: 核心体验
### 1.2 技术栈
| 层级 | 技术选型 |
|------|----------|
| 后端 | Go (Golang) |
| 前端 | Vue3 + Typescri-pt |
| 数据库 | MySQL |
| 缓存 | Redis (预留) |
| 消息队列 | RabbitMQ (预留) |
| 实时通信 | WebSocket |
| 认证 | JWT |
### 1.3 环境要求
- Go >= 1.20
- Node.js >= 18
- MySQL >= 8.0
- npm >= 9.0
---
## 2. UI/UX 规格
### 2.1 整体布局
- **移动端优先设计**: 宽度适配 375px - 428px
- **底部Tab导航**: 4个主Tab (聊天、通信录、发现、我)
- **状态栏高度**: 44px
- **底部导航栏高度**: 50px
### 2.2 色彩方案
```css
--wechat-green: #07C160; /* 主色调 -*/
--wechat-green-dark: #06AD56; /* 深绿色 */
--wechat-green-light: #09E07C; /* 浅绿色 */
--bg-color: #EDEDED; /* 背景色 */
--card-bg: #000FFF; /* 卡片背景 */
--text-primary: #191919; /* 主文字 */
--text-secondary: #999999; /* 次要文字 */
--text-tertiary: #CCCCCC; /* 辅助文字 */
--divider: #E5E5E5; /* 分割线 */
--red: #FF4D4F; /* 红色/错误 */
--orange: #FF9500; /* 橙色/警告 */
--blue: #007AFF; /* 蓝色/链接 */
```
### 2.3 字体规范
- **主字体**: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial
- **标题**: 17px, font-weight: 600
- **正文**: 15px, font-weight: 400
- **辅助文字**: 13px, font-weight: 400
### 2.4 组件规范
- **列表项高度**: 54px
- **头像尺寸**: 40px (列表), 80px (个人资料)
- **按钮圆角**: 4px
- **输入框高度**: 44px
- **图标尺寸**: 24px
---
## 3. 功能规格
### 3.1 用户系统
#### 3.1.1 注册
- 支持手机号注册
- 支持邮箱注册
- 密码要求: 6-20位字母数字组合
- 验证码: 6位数字
#### 3.1.2 登录
- 手机号/邮箱 + 密码登录
- JWT Token有效期: 7天
- Token刷新机制
#### 3.1.3 用户资料
| 字段 | 类型 | 说明 |
|------|------|------|
| id | uint | 用户ID |
| username | string | 用户名 (不可重复) |
| nickname | string | 昵称 |
| avatar | string | 头像URL |
| phone | string | 手机号 |
| email | string | 邮箱 |
| wechat_id | string | 聊天号 (不可重复) |
| gender | int8 | 0未知 1男 2女 |
| country | string | 国家 |
| province | string | 省份 |
| city | string | 城市 |
| bio | string | 个性签名 |
| created_at | timestamp | 创建时间 |
| updated_at | timestamp | 更新时间 |
### 3.2 好友系统
#### 3.2.1 好友关系
| 状态 | 说明 |
|------|------|
| 0 | 非好友 |
| 1 | 已是好友 |
| 2 | 待同意 (我发出的请求) |
| 3 | 待同意 (对方发出的请求) |
| 4 | 已拉黑 |
#### 3.2.2 好友操作
- 搜索用户 (按用户名/手机号/聊天号)
- 添加好友 (发送验证消息)
- 删除好友
- 拉黑/解除拉黑
- 查看好友资料
### 3.3 消息系统
#### 3.3.1 消息类型
| 类型 | 字段 | 说明 |
|------|------|------|
| 文本 | text | 纯文本 |
| 图片 | image | 图片URL |
| 语音 | voice | 语音URL + 时长 |
| 表情 | emoji | 表情ID |
| 文件 | file | 文件URL + 文件名 + 大小 |
| 位置 | location | 经纬度 + 地点名称 |
#### 3.3.2 消息状态
| 状态 | 说明 |
|------|------|
| 0 | 发送中 |
| 1 | 发送成功 |
| 2 | 发送失败 |
| 3 | 已撤回 |
#### 3.3.3 消息功能
- 发送/接收消息
- 消息撤回 (2分钟内)
- 消息已读回执
- 未读消息计数
- 聊天记录搜索
### 3.4 会话系统
#### 3.4.1 会话类型
| 类型 | 说明 |
|------|------|
| 1 | 私聊 |
| 2 | 群聊 |
#### 3.4.2 会话列表
- 按新消息时间倒序
- 显示会话头像、名称、新消息、消息时间
- 未读消息数量角标
### 3.5 群聊系统
#### 3.5.1 群资料
| 字段 | 说明 |
|------|------|
| id | 群ID |
| name | 群名称 |
| avatar | 群头像 |
| owner_id | 群主ID |
| notice | 群公告 |
| created_at | 创建时间 |
#### 3.5.2 群成员
| 角色 | 说明 |
|------|------|
| 0 | 普通成员 |
| 1 | 管理员 |
| 2 | 群主 |
#### 3.5.3 群功能
- 创建群聊
- 解散群聊 (仅群主)
- 邀请成员
- 移除成员 (仅群主/管理员)
- 转让群主 (仅群主)
- 群公告
---
## 4. API 规格
### 4.1 公共接口
#### 4.1.1 用户注册
```
POST /api/v1/auth/register
Body: { "phone": string, "email": string, "password": string, "code": string }
Response: { "code": 0, "data": { "token": string, "user": obje-ct } }
```
#### 4.1.2 用户登录
```
POST /api/v1/auth/login
Body: { "account": string, "password": string }
Response: { "code": 0, "data": { "token": string, "user": obje-ct } }
```
#### 4.1.3 获取验证码
```
POST /api/v1/auth/code
Body: { "phone": string }
Response: { "code": 0 }
```
### 4.2 用户接口
#### 4.2.1 获取用户资料
```
GET /api/v1/user/profile
Headers: Authorization: Bearer <token>
Response: { "code": 0, "data": user }
```
#### 4.2.2 更新用户资料
```
PUT /api/v1/user/profile
Headers: Authorization: Bearer <token>
Body: { "nickname": string, "avatar": string, "bio": string, ... }
Response: { "code": 0, "data": user }
```
#### 4.2.3 搜索用户
```
GET /api/v1/user/search?q=keyword
Headers: Authorization: Bearer <token>
Response: { "code": 0, "data": [user] }
```
### 4.3 好友接口
#### 4.3.1 获取好友列表
```
GET /api/v1/friends
Headers: Authorization: Bearer <token>
Response: { "code": 0, "data": [friend] }
```
#### 4.3.2 添加好友
```
POST /api/v1/friends
Headers: Authorization: Bearer <token>
Body: { "user_id": uint, "message": string }
Response: { "code": 0 }
```
#### 4.3.3 删除好友
```
DELETE /api/v1/friends/:id
Headers: Authorization: Bearer <token>
Response: { "code": 0 }
```
### 4.4 消息接口
#### 4.4.1 获取会话列表
```
GET /api/v1/conversations
Headers: Authorization: Bearer <token>
Response: { "code": 0, "data": [conversation] }
```
#### 4.4.2 获取聊天记录
```
GET /api/v1/messages/:conversation_id?limit=20&before=timestamp
Headers: Authorization: Bearer <token>
Response: { "code": 0, "data": [message] }
```
#### 4.4.3 发送消息
```
POST /api/v1/messages
Headers: Authorization: Bearer <token>
Body: { "conversation_id": uint, "type": int, "content": obje-ct }
Response: { "code": 0, "data": message }
```
#### 4.4.4 撤回消息
```
DELETE /api/v1/messages/:id
Headers: Authorization: Bearer <token>
Response: { "code": 0 }
```
### 4.5 WebSocket
#### 4.5.1 连接
```
WS /api/v1/ws?token=<token>
```
#### 4.5.2 消息格式
```json
{
"type": "message|ack|read|typing",
"data": { }
}
```
---
## 5. 数据库设计
### 5.1 用户表 (users)
```sql
CREATE TABLE users (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
nickname VARCHAR(50) DEFAULT ’’,
password VARCHAR(255) NOT NULL,
avatar VARCHAR(500) DEFAULT ’’,
phone VARCHAR(20) UNIQUE,
email VARCHAR(100) UNIQUE,
wechat_id VARCHAR(50) UNIQUE,
gender TINYINT DEFAULT 0,
country VARCHAR(50) DEFAULT ’’,
province VARCHAR(50) DEFAULT ’’,
city VARCHAR(50) DEFAULT ’’,
bio VARCHAR(200) DEFAULT ’’,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_username (username),
INDEX idx_phone (phone),
INDEX idx_email (email)
);
```
### 5.2 好友表 (friendships)
```sql
CREATE TABLE friendships (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT UNSIGNED NOT NULL,
friend_id BIGINT UNSIGNED NOT NULL,
status TINYINT DEFAULT 0 COMMENT ’0非好友 1好友 2待同意 3待同意 4拉黑’,
remark VARCHAR(50) DEFAULT ’’ COMMENT ’好友备注’,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY uk_friend (user_id, friend_id),
INDEX idx_user_id (user_id),
INDEX idx_friend_id (friend_id)
);
```
### 5.3 会话表 (conversations)
```sql
CREATE TABLE conversations (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
type TINYINT NOT NULL COMMENT ’1私聊 2群聊’,
name VARCHAR(100) DEFAULT ’’,
avatar VARCHAR(500) DEFAULT ’’,
owner_id BIGINT UNSIGNED,
last_message_id BIGINT UNSIGNED DEFAULT 0,
last_message_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
unread_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_last_time (last_message_time)
);
```
### 5.4 消息表 (messages)
```sql
CREATE TABLE messages (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
conversation_id BIGINT UNSIGNED NOT NULL,
sender_id BIGINT UNSIGNED NOT NULL,
type TINYINT NOT NULL DEFAULT 1 COMMENT ’1文本 2图片 3语音 4表情 5文件 6位置’,
content TEXT NOT NULL,
status TINYINT DEFAULT 1 COMMENT ’0发送中 1成功 2失败 3已撤回’,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_conversation (conversation_id),
INDEX idx_sender (sender_id),
INDEX idx_created (created_at)
);
```
### 5.5 群成员表 (group_members)
```sql
CREATE TABLE group_members (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
group_id BIGINT UNSIGNED NOT NULL,
user_id BIGINT UNSIGNED NOT NULL,
role TINYINT DEFAULT 0 COMMENT ’0普通 1管理员 2群主’,
joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_group_user (group_id, user_id),
INDEX idx_group_id (group_id),
INDEX idx_user_id (user_id)
);
```
---
## 6. 配置文件
### 6.1 config.yaml
```yaml
server:
port: 8080
mode: debug
database:
host: localhost
port: 3306
username: root
password: abc_000000
name: uuchat
max_open_conns: 25
max_idle_conns: 5
redis:
host: localhost
port: 6379
password: ""
db: 0
jwt:
secret: ""
expire: 168h
```
### 6.2 环境变量优先级
1. `JWT_SECRET` - JWT密钥
2. `MYSQL_PASSWORD` - MySQL密码
3. `MYSQL_HOST` - MySQL主机
4. `MYSQL_PORT` - MySQL端口
5. `REDIS_PASSWORD` - Redis密码
---
## 7. 项目结构
### 7.1 后端结构
```
/backend
├── cmd/
│ └── server/
│ └── main.go
├── internal/
│ ├── config/
│ ├── middleware/
│ ├── models/
│ ├── handlers/
│ ├── services/
│ ├── repository/
│ └── websocket/
├── pkg/
│ ├── utils/
│ └── response/
├── go.mod
└── go.sum
```
### 7.2 前端结构
```
/frontend
├── src/
│ ├── api/
│ ├── assets/
│ ├── components/
│ ├── composables/
│ ├── layouts/
│ ├── locales/
│ ├── router/
│ ├── stores/
│ ├── styles/
│ ├── types/
│ ├── views/
│ ├── App.vue
│ └── main.ts
├── index.html
├── package.json
├── tsconfig.json
└── vite.config.ts
```
亲爱的各位买家朋友,懂源码就直接购买;
1. 在使用本系统时,使用方必须在国家相关法律法规范围内并经过国家相关部门的授权许可,禁止用于一切非法行为。
2. 本系统的使用用途仅限于测试、实验、研究为目的,禁止用于一切商业运营,本团队不承担使用者在使用过程中的任何违法行为负责。
3. 源码以演示站为准。
注:
1、请勿以无法对接或者其他相关问题退款,本店所有技术服务均为收费费用;
2、商品设置的安装调试只是单网站运行环境配置,不包含其它任何相关配置;
3、如源码存在问题可以购买的技术服务;本店承接数字资产相关服务;
4、网站相关接口均为收费配置;
5、请不要以任何这样那样的问题说程序无法运行;
描述此节主要防止骗取源码朋友,报骗取源码心态请绕行;
我们尽快我们所服务能力服务好我们忠实用户;


发布日期:2026年05月19日
🔥 限时优惠
📚 购买流程
1. 点击"立即购买"按钮
2. 输入邮箱(无需注册)
3. 选择支付方式完成支付
4. 支付成功后直接下载
✅ 支持游客购买,无需注册
📋 保存订单号可随时查询下载
💬 客服QQ:3989305418