# gochat_1 **Repository Path**: rascalpotato/gochat_1 ## Basic Information - **Project Name**: gochat_1 - **Description**: GoChat是一个使用Go、Gin、Gorilla WebSocket、GORM、SQLite和Vue3开发的实时聊天系统,支持用户注册、登录、群聊、私聊、在线用户管理等功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-04 - **Last Updated**: 2026-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GoChat - 实时聊天系统 GoChat是一个使用Go、Gin、Gorilla WebSocket、GORM、SQLite和Vue3开发的实时聊天系统,支持用户注册、登录、群聊、私聊、在线用户管理等功能。 示例图: ![](./images/1.png) ![](./images/2.png) ## 技术栈 ### 后端 - **Go** - 高性能后端语言 - **Gin** - 轻量级Web框架 - **Gorilla WebSocket** - WebSocket库 - **GORM** - ORM库 - **SQLite** - 轻量级数据库 - **JWT** - 身份验证 ### 前端 - **Vue3** - 前端框架 - **WebSocket API** - 实时通信 - **LocalStorage** - 客户端存储 ## 功能特性 - ✅ 用户注册和登录 - ✅ JWT身份验证 - ✅ 实时消息推送 - ✅ 群聊功能 - ✅ 私聊功能 - ✅ 在线用户管理 - ✅ 单设备登录限制 - ✅ 消息历史记录 - ✅ 响应式设计 - ✅ 设备信息收集 - ✅ 并发连接数控制 - ✅ 生产环境配置 ## 安装步骤 ### 1. 克隆项目 ```bash git clone https://gitee.com/oasosao/gochat.git cd gochat ``` ### 2. 安装后端依赖 ```bash cd backend go mod tidy ``` ### 3. 安装前端依赖 ```bash cd ../frontend npm install ``` ## 运行方式 ### 1. 启动后端服务 ```bash cd backend # 开发环境 go run main.go # 生产环境 export GIN_MODE=release export PORT=8080 go run main.go ``` ### 2. 启动前端服务 ```bash cd frontend # 开发环境 npm run dev # 生产环境 npm run build # 然后将dist目录部署到Web服务器 ``` ## 配置说明 ### 后端配置 后端配置通过环境变量设置,支持以下配置项: | 环境变量 | 默认值 | 描述 | |---------|-------|------| | PORT | :8080 | 服务器端口 | | GIN_MODE | debug | 运行模式 (debug/release) | | DB_TYPE | sqlite | 数据库类型 | | DB_PATH | chat.db | SQLite数据库路径 | | JWT_SECRET | your-secret-key | JWT密钥 | | JWT_EXPIRATION | 24 | JWT过期时间(小时) | | WS_READ_BUFFER_SIZE | 1024 | WebSocket读缓冲区大小 | | WS_WRITE_BUFFER_SIZE | 1024 | WebSocket写缓冲区大小 | | WS_READ_DEADLINE | 60 | WebSocket读超时(秒) | | WS_PING_INTERVAL | 30 | WebSocket ping间隔(秒) | | WS_MAX_CONNECTIONS | 100 | 最大并发连接数 | | CORS_ALLOW_ORIGINS | * | CORS允许的来源 | ### 前端配置 前端配置在`.env`和`.env.production`文件中设置: ```env # .env (开发环境) VITE_API_URL=http://localhost:8080 # .env.production (生产环境) VITE_API_URL=https://your-api-server.com ``` ## 项目结构 ``` gochat/ ├── backend/ # 后端代码 │ ├── config/ # 配置管理 │ ├── controllers/ # 控制器 │ ├── models/ # 数据模型 │ ├── utils/ # 工具函数 │ ├── websocket/ # WebSocket管理 │ ├── main.go # 主入口 │ └── go.mod # Go模块文件 ├── frontend/ # 前端代码 │ ├── src/ # 源代码 │ │ ├── App.vue # 主应用组件 │ │ └── main.js # 前端入口 │ ├── .env # 开发环境配置 │ ├── .env.production # 生产环境配置 │ ├── index.html # HTML模板 │ ├── package.json # 包配置 │ └── vite.config.js # Vite配置 └── README.md # 项目说明 ``` ## 核心功能说明 ### 1. 用户认证 - 支持用户注册和登录 - 使用JWT进行身份验证 - 密码使用bcrypt加密存储 ### 2. WebSocket连接管理 - 支持实时消息推送 - 实现单设备登录限制 - 控制并发连接数 - 自动清理无效连接 ### 3. 消息系统 - 支持群聊和私聊 - 消息持久化到数据库 - 加载历史消息 - 消息发送状态管理 ### 4. 在线用户管理 - 实时更新在线用户列表 - 区分当前用户和其他用户 - 显示用户设备信息 - 处理用户上下线事件 ### 5. 响应式设计 - 适配不同屏幕尺寸 - 优化移动端体验 - 支持大屏幕显示 ## 开发指南 ### 后端开发 1. 确保Go 1.18+已安装 2. 进入backend目录 3. 运行`go mod tidy`安装依赖 4. 运行`go run main.go`启动开发服务器 ### 前端开发 1. 确保Node.js 16+已安装 2. 进入frontend目录 3. 运行`npm install`安装依赖 4. 运行`npm run dev`启动开发服务器 ## 部署指南 ### 后端部署 1. 构建可执行文件: ```bash cd backend go build -o gochat-server . ``` 2. 配置环境变量并运行: ```bash export GIN_MODE=release export PORT=8080 export JWT_SECRET=your-secure-secret ./gochat-server ``` ### 前端部署 1. 构建生产版本: ```bash cd frontend npm run build ``` 2. 将`dist`目录部署到Web服务器(如Nginx、Apache等) 3. 配置Web服务器,将API请求代理到后端服务 ## 安全注意事项 1. 在生产环境中,务必修改JWT_SECRET为安全的随机字符串 2. 配置CORS_ALLOW_ORIGINS为具体的域名,不要使用通配符 3. 定期清理数据库中的过期数据 4. 监控服务器负载和连接数 ## 贡献指南 欢迎贡献代码和提出问题!请按照以下步骤进行: 1. Fork项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开Pull Request ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 --- 感谢使用GoChat!希望它能为您的实时通信需求提供帮助。