# chat-app **Repository Path**: prefer2023/chat-app ## Basic Information - **Project Name**: chat-app - **Description**: No description available - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-20 - **Last Updated**: 2025-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 聊天应用程序 本项目是一个简单的聊天应用程序,用户可以注册、登录,并通过 WebSocket 实现实时通信。项目分为前端和后端两部分,后端负责用户认证和消息广播,前端提供用户界面。 ## 项目结构 ``` chat-app ├── backend │ ├── server.js # 服务器入口,设置 Socket.io 并处理连接 │ ├── users.json # 存储用户名和加密后的密码 │ ├── auth │ │ ├── jwt.js # 生成和验证 JWT 的函数 │ │ └── hash.js # 用户密码的加密和验证函数 │ └── sockets │ └── chatSocket.js # 处理聊天逻辑,监听消息并广播给客户端 ├── frontend │ ├── index.html # 欢迎页面 │ ├── login.html # 用户登录页面 │ ├── register.html # 用户注册页面 │ ├── chat.html # 聊天界面 │ ├── js │ │ ├── chat.js # 聊天功能的逻辑 │ │ ├── login.js # 用户登录逻辑 │ │ ├── register.js # 用户注册逻辑 │ │ ├── change-password.js # 修改密码逻辑 │ │ ├── delete-account.js # 注销账户逻辑 │ │ └── logout.js # 用户登出逻辑 │ └── css │ ├── chat.css # 聊天页面的样式 │ ├── login.css # 登录页面的样式 │ ├── register.css # 注册页面的样式 │ └── index.css # 欢迎页面的样式 ├── package.json # npm 配置文件,包含依赖和脚本 └── README.md # 项目文档 ``` ## 功能 - **用户注册**:通过用户名和密码注册新用户。 - **用户登录**:使用 JWT 进行身份验证。 - **实时聊天**:通过 WebSocket 实现消息的实时发送和接收。 - **修改密码**:登录后可以修改密码。 - **注销账户**:用户可以永久删除自己的账户。 - **在线人数显示**:实时显示当前在线用户人数。 - **系统消息**:用户加入或离开时,系统会发送通知。 ## 安装步骤 1. 克隆仓库: ```bash git clone https://gitee.com/prefer2023/chat-app.git cd chat-app ``` 2. 安装依赖: ```bash npm install ``` 3. 启动服务器: ```bash npm start ``` 4. 打开浏览器访问前端页面: - 访问 `http://localhost:3000` 查看欢迎页面。 ## 使用说明 1. **注册**: - 打开注册页面 `register.html`。 - 输入用户名和密码完成注册。 - 已经生成了3个测试用户,用户名:`test`、`abcd`、`你好世界`,密码:`123`。 2. **登录**: - 打开登录页面 `login.html`。 - 输入用户名和密码完成登录。 3. **聊天**: - 登录后会跳转到聊天页面 `chat.html`。 - 在输入框中输入消息并点击发送按钮,即可与其他在线用户实时聊天。 4. **修改密码**: - 在聊天页面点击“修改密码”按钮。 - 按提示输入旧密码和新密码完成修改。 5. **注销账户**: - 在聊天页面点击“注销”按钮。 - 确认后,账户将被永久删除。 6. **登出**: - 在聊天页面点击“退出登录”按钮。 - 用户将被登出并返回欢迎页面。 ## 技术栈 - **后端**: - Node.js - Express - Socket.io - JSON Web Token (JWT) - bcrypt - **前端**: - HTML5 - CSS3 - JavaScript ## 注意事项 - 默认情况下,JWT 的有效期为 1 小时。如果 Token 过期,用户需要重新登录。 - 用户密码在存储前会使用 bcrypt 进行加密,确保安全性。 - `users.json` 文件用于存储用户数据,请勿直接修改。 ## 许可证 无需许可证,随意使用和传播本项目。