Skip to content

coke-playground/http-file-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Http File Server

本项目是一个基于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

LICENSE

Apache 2.0

About

使用task->push实现回复大消息的示例

Resources

License

Stars

Watchers

Forks

Releases

No releases published