本项目是一个基于coke实现的Http文件服务器。
Workflow目前(v0.11.11)暂未支持异步回复数据流的方式,但可以通过server_task->push以伪异步的方式实现该模式,例如可实现Http Server-Sent Events。本项目是coke框架实现服务器的一个示例,也是workflow使用SSE模式的一个示例,项目中没有引入晦涩的操作,因此非常适合初学者了解coke。
本项目有部分功能未实现,感兴趣的小伙伴可以从此处开始入手
- 实现
HTTP HEAD方法并支持客户端获取文件摘要(如MD5)的请求- 该需求可通过
coke::pread分块读取文件,通过coke::switch_go_thread切换到计算线程进行文件摘要的计算,计算完成后填写到HttpResponse并回复给客户端 - 计算摘要可能很耗时,也可以通过项目中回复大文件的方式,每隔一段时间回复一个
Http Header告知客户端计算仍在进行,请继续等待,在这个过程中如果发现客户端已经关闭了连接(server_task->push失败)则可提前结束摘要的计算
- 该需求可通过
- 实现速度限制的功能
- 文件服务会占用大量带宽,可以借助
coke::QpsPool的思想实现回复速度限制的功能,公平地提供服务
- 文件服务会占用大量带宽,可以借助
- 实现数据压缩功能
- 这会同时使用到异步文件读取、切换计算线程压缩、伪异步回复消息三个功能
- 实现Http Range请求以支持断点续传
- 这与当前实现的伪异步消息回复过程差不多,可用于再次体验协程在异步逻辑中的便捷之处
- 当
GET请求是目录时,跟据Directory Listing格式生成回复消息- 这可能不涉及异步操作,可用于娱乐
GCC >= 13
Apache 2.0