{"id":27644706,"url":"https://github.com/sowingg2333/web-chat","last_synced_at":"2026-03-03T16:02:11.768Z","repository":{"id":288924860,"uuid":"969478552","full_name":"SowingG2333/web-chat","owner":"SowingG2333","description":"A web chat server based on Flask and ZeroMQ","archived":false,"fork":false,"pushed_at":"2025-04-21T09:48:04.000Z","size":28,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-24T00:58:34.339Z","etag":null,"topics":["chat-room","flask","socketio","zeromq"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SowingG2333.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-20T08:35:16.000Z","updated_at":"2025-04-21T09:48:07.000Z","dependencies_parsed_at":"2025-04-24T00:58:34.360Z","dependency_job_id":null,"html_url":"https://github.com/SowingG2333/web-chat","commit_stats":null,"previous_names":["sowingg2333/web-chat"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/SowingG2333/web-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SowingG2333%2Fweb-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SowingG2333%2Fweb-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SowingG2333%2Fweb-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SowingG2333%2Fweb-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SowingG2333","download_url":"https://codeload.github.com/SowingG2333/web-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SowingG2333%2Fweb-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30051099,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T15:26:47.567Z","status":"ssl_error","status_checked_at":"2026-03-03T15:26:17.132Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat-room","flask","socketio","zeromq"],"created_at":"2025-04-24T00:58:32.059Z","updated_at":"2026-03-03T16:02:11.763Z","avatar_url":"https://github.com/SowingG2333.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# web-chat：分布式实时聊天系统\n\n## 项目概述\n\n这是一个基于WebSocket和ZeroMQ的分布式实时聊天系统，支持多服务器部署、文本和语音消息，以及跨容器通信。系统采用双层通信架构，提供高可用性和可扩展性。\n\n## 主要特性\n\n- ✅ 实时文本消息交换\n- ✅ 语音消息支持\n- ✅ 多服务器分布式部署\n- ✅ 用户在线状态同步\n- ✅ 消息历史记录\n- ✅ 容器化部署支持\n- ✅ 资源管理和错误处理\n\n## 技术栈\n\n- **后端**：Python, Flask, Flask-SocketIO, ZeroMQ, Eventlet\n- **前端**：HTML5, CSS3, JavaScript, Socket.IO客户端\n- **部署**：Docker, Docker Compose\n\n## 系统架构\n\n系统采用双层通信架构：\n\n1. **客户端-服务器通信层**：使用Socket.IO实现WebSocket通信\n2. **服务器间通信层**：使用ZeroMQ的PUB-SUB模式实现消息同步\n\n## 安装与部署\n\n### 本地开发环境\n\n1. 克隆仓库\n   ```bash\n   git clone https://github.com/yourusername/web-chat.git\n   cd web-chat\n   ```\n\n2. 安装依赖\n   ```bash\n   pip install requirements.txt\n   ```\n\n3. 启动服务器\n   ```bash\n   python server.py\n   ```\n\n4. 访问 http://localhost:5002\n\n### 多实例本地部署\n\n```bash\n# 第一个实例\nPORT=5002 ZMQ_HOST=localhost python server.py\n\n# 第二个实例\nPORT=5003 ZMQ_HOST=localhost python server.py\n```\n\n### Docker容器部署\n\n1. 构建Docker镜像\n   ```bash\n   docker build -t web-chat .\n   ```\n\n2. 创建Docker网络\n   ```bash\n   docker network create chat-network\n   ```\n\n3. 启动多个容器\n   ```bash\n   # 容器A\n   docker run -d --name chat-a --network chat-network -p 5001:5002 -e ZMQ_HOST=chat-b,chat-c web-chat\n\n   # 容器B\n   docker run -d --name chat-b --network chat-network -p 5003:5002 -e ZMQ_HOST=chat-a,chat-c web-chat\n\n   # 容器C\n   docker run -d --name chat-c --network chat-network -p 5004:5002 -e ZMQ_HOST=chat-a,chat-b web-chat\n   ```\n\n## 使用指南\n\n1. 打开浏览器访问聊天应用\n2. 输入用户名加入聊天室\n3. 发送文本消息或录制语音消息\n4. 查看在线用户列表和系统状态信息\n\n## 项目结构\n\n```\nweb-chat/\n├── server.py         # 主服务器代码\n├── templates/        # HTML模板\n│   └── index.html    # 主页面\n├── static/           # 静态资源\n│   ├── main.js       # 前端JavaScript\n│   └── style.css     # CSS样式\n├── Dockerfile        # Docker构建文件\n└── README.md         # 项目文档\n```\n\n## 开发者文档\n\n### 核心模块\n\n- **Flask应用**：提供HTTP服务和API端点\n- **Socket.IO**：处理WebSocket实时通信\n- **ZeroMQ PUB-SUB**：实现服务器间消息同步\n- **Eventlet**：处理异步I/O，避免阻塞\n\n### 消息流处理\n\n1. 客户端发送消息到Socket.IO\n2. 服务器处理并保存到本地历史记录\n3. 服务器通过ZeroMQ发布消息\n4. 其他服务器订阅并接收消息\n5. 其他服务器向各自的客户端广播消息\n\n### 添加新功能\n\n添加新消息类型：\n1. 扩展前端UI处理新消息类型\n2. 在服务器端添加新的Socket.IO事件处理函数\n3. 确保ZeroMQ监听器能处理新的消息类型\n\n## 许可证\n\n[MIT License](https://opensource.org/licenses/MIT)\n\n## 联系方式\n\n如有问题或建议，请联系：donghangduan@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsowingg2333%2Fweb-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsowingg2333%2Fweb-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsowingg2333%2Fweb-chat/lists"}