# agent_chat_app **Repository Path**: istop/agent_chat_app ## Basic Information - **Project Name**: agent_chat_app - **Description**: 实时聊天应用 - Flask + Socket.IO - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-03 - **Last Updated**: 2026-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简易网页聊天 APP 基于 Flask + PyMySQL + 前端单页应用的简易聊天室,支持**私聊**和**群组聊天**。 ## 功能特性 | 功能 | 说明 | |------|------| | 用户登录 | 设置昵称,存入 localStorage + 数据库 | | 私聊 | 一对一文字、表情、图片聊天 | | 群组聊天 | 创建群组、添加成员、群消息 | | 在线状态 | 心跳检测,30s 超时自动离线 | | 聊天历史 | 加载最近 50 条,支持"加载更多"分页 | | 未读提示 | 侧栏红点数字提示未读消息 | | 表情 | 点击 😊 选择 Emoji | | 图片 | 上传图片,存储到 uploads 目录 | | Nginx 静态文件 | 图片通过 `/assets/` 由 Nginx 直接响应 | ## 项目结构 ``` chat_app/ ├── app.py ← Flask 后端(用户、消息、群组 API) ├── templates/ │ └── chat.html ← 前端页面(含全部 CSS/JS,单页应用) ├── uploads/ ← 图片存储目录 ├── sql/ │ ├── init.sql ← 数据库建表 SQL │ └── nginx.conf ← Nginx 配置参考 └── README.md ← 本文档 ``` ## 数据库表结构 | 表 | 说明 | |----|------| | `users` | 用户表(id, username, is_online, last_seen) | | `groups` | 群组表(id, group_name, creator_id) | | `group_members` | 群成员表(group_id, user_id) | | `messages` | 消息表(支持私聊 receiver_id / 群聊 group_id) | ## 启动步骤 ### 1. 初始化数据库 在 MySQL 中执行: ```sql CREATE DATABASE IF NOT EXISTS chat_app DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE chat_app; -- 然后执行 sql/init.sql 中的建表语句 SOURCE d:/Project/excel_demo/chat_app/sql/init.sql; ``` ### 2. 修改数据库密码 编辑 `app.py` 中的 `DB_CONFIG`,把 `password` 改为你的 MySQL 密码。 ### 3. 安装依赖 ```bash pip install flask pymysql ``` (Pillow 不是必须的,已移除) ### 4. 启动应用 ```bash cd d:/Project/excel_demo/chat_app python app.py ``` 浏览器打开 `http://127.0.0.1:5000` 即可使用。 ## Nginx 配置(Docker 版) `sql/nginx.conf` 已配置好,启动方式: ```bash # 1. 宿主机启动 Flask cd d:/Project/excel_demo/chat_app python app.py # 2. 启动 nginx 容器 cd d:/Project/excel_demo/chat_app docker compose up -d # 访问 http://localhost ``` ### Nginx 请求路径 | 请求 | 处理方 | |------|--------| | `GET /` | Flask → 返回 `chat.html` | | `POST /api/*` | Flask | | `GET /assets/*` | Nginx 直接响应 `uploads/` 目录 | ## API 接口列表 ### 用户 | 接口 | 方法 | 说明 | |------|------|------| | `/api/login` | POST | 登录/注册 | | `/api/logout` | POST | 退出登录 | | `/api/heartbeat` | POST | 心跳保活 | ### 会话 | 接口 | 方法 | 说明 | |------|------|------| | `/api/conversations` | GET | 获取会话列表(私聊 + 群聊) | ### 消息 | 接口 | 方法 | 说明 | |------|------|------| | `/api/messages?type=private&friend_id=1` | GET | 获取私聊消息 | | `/api/messages?type=group&group_id=1` | GET | 获取群消息 | | `/api/send` | POST | 发送消息(支持私聊/群聊) | | `/api/upload` | POST | 上传图片 | ### 群组 | 接口 | 方法 | 说明 | |------|------|------| | `/api/groups` | GET | 获取我的群组列表 | | `/api/groups/create` | POST | 创建群组 | | `/api/groups/:id/members` | GET | 获取群成员 | | `/api/groups/:id/add` | POST | 添加群成员 | | `/api/groups/:id/remove` | POST | 移除群成员(群主权限) |