diff --git a/.cocoon-plan.md b/.cocoon-plan.md index b8b5e59..ad50c1c 100644 --- a/.cocoon-plan.md +++ b/.cocoon-plan.md @@ -47,12 +47,16 @@ - [x] **Windows 兼容性** — 跨平台抽象层,支持 Linux/macOS/Windows(MinGW/MSVC) ✅ 2026-06-04 ### Phase 4 — 生态 -- [ ] WebSocket 广播/消息路由 +- [x] **WebSocket 广播/频道路由** — 全局连接注册表 + 广播/定向发送 API ✅ 2026-06-05 - [ ] 中间件机制 - [ ] 插件系统 ## 当前状态 +- WebSocket 广播系统已上线: + - `ws_broadcast()` 全局广播、`ws_broadcast_to_path()` 按频道广播 + - `ws_connection_count()` 连接计数 + - 线程安全(链表 + mutex),连接自动注册/注销 - 编译通过,零警告(除 coco 子模块的 linker .note.GNU-stack 提示) - **61 项集成测试全部通过**(GET/HEAD/POST/404/Range/304/gzip/brotli/MIME/目录浏览/路径防护/文件上传/TLS/HTTP/2/h2c/WebSocket/访问日志) - **127 个单元测试全部通过**(Unity 框架) @@ -64,15 +68,16 @@ - **TLS/HTTPS**:OpenSSL 3.0 Memory BIO + coco 协程集成,自签名证书支持,ALPN 协商 h2/http1.1 - **HTTP/2**:完整功能(静态文件服务、目录浏览、缓存协商、压缩、HEAD 请求) - **h2c**:明文 HTTP/2 支持(prior knowledge + Upgrade 协商) -- **WebSocket**:RFC 6455 握手、文本/二进制帧 echo、ping/pong/close +- **WebSocket**:RFC 6455 握手、文本/二进制帧 echo、ping/pong/close、**广播/频道** - **Windows 兼容性**:跨平台抽象层 platform.h + platform.c,CMakeLists.txt 自动检测平台,Makefile 在 Windows 下自动链接 ws2_32 ## 待办池 -1. **[高] Phase 4 生态功能** — WebSocket 广播/消息路由、中间件机制、插件系统 -2. **[中] 完善 WebSocket 功能** — 消息路由、广播、连接管理面板 +1. **[高] 中间件机制** — 请求处理前后 hook 系统,允许插入自定义逻辑(认证、限流、CORS) +2. **[高] 插件系统** — 动态加载 .so/.dll 扩展 3. **[低] Doxygen 中文注释** — tls.c, config.c, multipart.c, access_log.c, main.c, websocket.c 等模块待补充 4. **[低] 性能优化** — 连接池复用、零拷贝优化、压缩预缓存 +5. **[低] WebSocket 单元测试** — 为广播/注册表 API 添加 C 单元测试 ## Windows 兼容性实现详情 @@ -105,6 +110,17 @@ - `Makefile`:添加 `platform.c`,Windows 下自动链接 `ws2_32` - 单元测试:127 个通过(Linux 验证),集成测试:61 项通过 - 推送到 feature/windows-compat-impl +- 2026-06-05: **本轮行动 — WebSocket 广播/频道路由系统** + - `websocket.c`:新增全局连接注册表(链表 + pthread_mutex + 原子计数) + - `ws_registry_add/remove`: 连接自动注册/注销 + - `ws_broadcast()`: 向所有活跃连接广播文本消息 + - `ws_broadcast_to_path()`: 按握手路径(如 `/ws/chat`)定向广播 + - `ws_connection_count()`: 获取当前连接数 + - `ws_handle_connection()` 新增 `path` 参数,用于频道标识 + - `server.c`:修改调用处,传入 `req.path` 作为频道 + - `websocket.h`:新增广播 API 声明 + - 编译零警告,61 项集成测试 + 127 个单元测试全部通过 + - 提交:`fix(coco)` 修正子模块 + `feat(websocket)` 广播系统 - 2026-06-05: **本轮行动 — 实现 WebSocket 支持(RFC 6455)** - 新增 `websocket.h` / `websocket.c`:WebSocket 协议完整实现 - 帧解析:支持 FIN、opcode、payload length(7/16/64 位)、mask 解掩码