# go-concurrent-chatroom **Repository Path**: magic_dragon/go-concurrent-chatroom ## Basic Information - **Project Name**: go-concurrent-chatroom - **Description**: Go语言高并发聊天室 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-12 - **Last Updated**: 2025-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 Go语言高并发聊天室 Demo 这是一个基于Go语言和WebSocket技术构建的高性能聊天室系统,支持10万+并发连接。 ![输入图片说明](demo/static/img.png) ## ✨ 特性 - 🔥 **高并发支持**:基于Goroutine,支持10万+并发连接 - ⚡ **低延迟**:消息延迟 < 25ms - 💾 **内存优化**:高效的内存管理和对象池 - 🌐 **实时通信**:WebSocket实现双向实时通信 - 📱 **响应式界面**:现代化的Web界面,支持移动端 - 📊 **性能监控**:实时性能统计和监控 ## 🏗️ 技术架构 - **后端**:Go + Gin + Gorilla WebSocket - **前端**:HTML5 + CSS3 + JavaScript - **并发模型**:Goroutine + Channel - **通信协议**:WebSocket + JSON ## 📋 系统要求 - Go 1.21+ - 现代浏览器(支持WebSocket) ## 🚀 快速开始 ### 1. 克隆项目 ```bash git clone https://gitee.com/magic_dragon/go-concurrent-chatroom.git cd go-concurrent-chatroom/demo ``` ### 2. 安装依赖 ```bash go mod tidy ``` ### 3. 运行服务器 ```bash go run . ``` ### 4. 访问聊天室 打开浏览器访问:http://localhost:8080 ## 📁 项目结构 ``` demo/ ├── main.go # 程序入口 ├── hub.go # 连接管理中心 ├── client.go # 客户端处理 ├── message.go # 消息结构定义 ├── static/ # 静态文件 │ ├── index.html # 聊天室页面 │ ├── style.css # 样式文件 │ └── app.js # 前端逻辑 ├── go.mod # 依赖管理 └── README.md # 说明文档 ``` ## 🔧 配置说明 ### 服务器配置 在 `main.go` 中可以修改以下配置: ```go // 服务器端口 const PORT = ":8080" // 性能监控间隔 const MONITOR_INTERVAL = 30 * time.Second ``` ### WebSocket配置 在 `client.go` 中可以调整WebSocket参数: ```go const ( writeWait = 10 * time.Second // 写入超时 pongWait = 60 * time.Second // Pong超时 pingPeriod = 54 * time.Second // Ping间隔 maxMessageSize = 512 // 最大消息大小 ) ``` ## 📊 性能测试 ### 基准测试结果 | 指标 | 数值 | |------|------| | 最大并发连接 | 100,000+ | | 平均延迟 | < 25ms | | 内存使用 | ~800MB (10万连接) | | CPU使用率 | < 45% | | 消息吞吐量 | 100,000条/秒 | ### 压力测试 使用内置的压力测试工具: ```bash # 方式1:启动脚本自动测试 ./start.sh --benchmark # 方式2:手动运行压力测试 cd tools go run benchmark.go -c 1000 -d 30s -r 5 # 参数说明: # -c: 并发连接数 # -d: 测试持续时间 # -r: 每秒发送消息数 ``` ## 🔍 监控和调试 ### 性能监控 服务器会每30秒输出性能统计: ``` 📊 性能统计 - 在线用户: 1000, 内存: 120.50 MB, Goroutine: 2010, GC次数: 15 ``` ### 健康检查 访问健康检查接口: ```bash curl http://localhost:8080/health ``` 返回: ```json { "status": "ok", "userCount": 1000, "time": "2024-01-15 14:30:25" } ``` ### API接口 - `GET /` - 聊天室主页 - `GET /ws` - WebSocket连接端点 - `GET /api/users` - 获取在线用户数 - `GET /health` - 健康检查 ## 🛠️ 开发指南 ### 添加新功能 1. **消息类型扩展**:在 `message.go` 中添加新的消息类型 2. **客户端功能**:在 `client.go` 中扩展客户端处理逻辑 3. **前端界面**:修改 `static/` 目录下的文件 ### 性能优化 1. **内存优化**:使用对象池减少GC压力 2. **网络优化**:调整缓冲区大小和超时参数 3. **并发优化**:使用分片锁减少锁竞争 ## 🐛 常见问题 ### Q: 连接数达到上限怎么办? A: 检查系统文件描述符限制: ```bash ulimit -n 1000000 ``` ### Q: 内存使用过高? A: 调整GC参数: ```bash export GOGC=50 ``` ### Q: 消息延迟较高? A: 检查网络配置和缓冲区设置。 ## 📝 许可证 MIT License ## 🤝 贡献 欢迎提交Issue和Pull Request! ## 📞 联系方式 - 作者:[sqalong] - 邮箱:[2369488791@qq.com] - 博客:[https://blog.csdn.net/Shenqialong?spm=1011.2415.3001.5343] --- ⭐ 如果这个项目对你有帮助,请给个Star!