- 使用epoll(io复用,可以同时处理多个请求)与线程池实现Reactor模型
- 基于小根堆实现的定时器,关闭超时的非活动连接;
- qinguoyi/TinyWebServer: Linux下C++轻量级Web服务器
- markparticle/WebServer: C++ Linux WebServer服务器
- zhangwenxiao/Cpp11WebServer: A High Performance HTTP Web Server in C++11
拷贝netcore/__default_config.hpp
到自己项目目录,修改对应的值
在自己的加入CMakeLists.txt
加入如下的一行
set(USER_CONFIG_PATH "${PROJECT_SOURCE_DIR}/__user_config.hpp")
- 需要创建
config
里的上传与静态文件夹
- Nomango/configor: Light weight configuration library for C++
- redis/hiredis: Minimalistic C client for Redis >= 1.2
- 小白视角:一文读懂社长的TinyWebServer | HU
+---------------------+
| | +-----------------------+
| Acceptor | | |
| | | |
+------------------------+ +---------+-----------+ +---------> Connection |
| | | | | |
| CallBack | |async_accept | +----+ |
| | | | | +---+-------------------+
+------------------------+ v | | | Register to task_queue
| | +--------------------+ | | | check to timeOut
| CallBackImplBase | | | | | +---v--------------------+
| | | AcceptorAwaiter | | | | Async_read +-----------------+
+------------------------+ | | | | | | |
+----------------+ +-+------------------+ | | +------------------------+ |
---------------------------- | 1.add_epoll |<-----------+-+ await_suspend | | | |
| 2.set callBack | +------------------+ | | +------------------------+ |
+------------------------+ | | | resume +-----------+ | | Async_send +-----------------+
| | +----------------+ +------------------+ +--->| | |
| AcceptorCallback | +------------------------+ |
| | |
+------------------------+ |
|
|
|
|
|
|
|
|
+----------------------+ +---------------------------------------------------------------------+ |
| | | | |
| | task_queue | |<---------------------------------------+
| | | |
| | +---------------------------------------------------------------------+
| |
| IoCentext |
| |
| |
| | +--------------------------------------------------------------------+
| | | |
| | run | |
| | | |
+----------------------+ +--------------------------------------------------------------------+
timer.hpp not use
- 连接超时检测
- url_query
- 表单提交 - multipart
- 文件上传
- 尺寸限制
- multipart
- 文件下载
- 使用write_ranges
- websocket(被动响应式)
- 简易Cache