xfy911 d7b9c93e78 feat(static): 实现静态资源服务模块
- static_serve_file: 文件服务(sendfile 零拷贝 + Range 支持)
- static_serve_directory: 目录浏览(HTML 列表 + 文件大小/时间)
- static_send_error: HTTP 错误响应(400/403/404/416/500)
- safe_path_join: 路径遍历防护
2026-06-03 16:45:48 +08:00

Cocoon

一个基于 coco 协程库的轻量级静态资源 Web 服务器。

Cocoon(茧)—— 用协程的轻盈,包裹静态资源的安稳。

特性

  • 🚀 协程驱动并发 — 基于 coco 的有栈协程,每个连接一个协程,告别回调地狱
  • 📁 静态文件托管 — 支持目录列表、MIME 类型自动识别、范围请求Range
  • 🧵 多线程调度 — 利用 coco 的 M:N 调度器,自动扩展至多核
  • 零拷贝发送 — 支持 sendfile减少用户态/内核态拷贝
  • 🔧 极简配置 — 命令行参数即可启动,无需配置文件

快速开始

构建

# 克隆仓库
git clone https://github.com/xfy911/cocoon.git
cd cocoon

# 构建(需要 coco 库和头文件)
make

# 运行
./cocoon -r ./examples/www -p 8080

依赖

  • coco — 协程库
  • Linux / macOS支持 epoll / kqueue

使用

# 基本用法
./cocoon -r /var/www/html -p 8080

# 多线程模式(自动检测 CPU 核心数)
./cocoon -r ./examples/www -p 8080 -t

# 指定工作线程数
./cocoon -r ./examples/www -p 8080 -w 8

架构

┌─────────────┐     ┌─────────────────┐     ┌──────────────┐
│  main.c     │────▶│  server.c       │────▶│  static.c    │
│  (入口)      │     │  (TCP 服务器)    │     │  (静态文件)   │
└─────────────┘     └─────────────────┘     └──────────────┘
                            │
                            ▼
                     ┌─────────────────┐
                     │  http.c         │
                     │  (HTTP 解析)     │
                     └─────────────────┘
                            │
                            ▼
                     ┌─────────────────┐
                     │  coco 协程库    │
                     │  (并发 + I/O)   │
                     └─────────────────┘

性能

基于 coco 协程的高性能上下文切换(< 100nsCocoon 能够轻松处理数万并发连接。

许可证

MIT

Description
No description provided
Readme 1.2 MiB
Languages
C 86.5%
C++ 7.7%
Shell 3.8%
Python 0.9%
Makefile 0.7%
Other 0.4%