Skip to content

Latest commit

 

History

History
6 lines (6 loc) · 1.02 KB

question.md

File metadata and controls

6 lines (6 loc) · 1.02 KB

介绍项目

  • 本项目主要是对浏览器的HTTP请求进行解析处理,处理完之后返回给客户端一个响应,如目录,目录项,错误页面等
  • 服务端使用基于socket的bufferevent通信,自带读取缓冲区和写入缓冲区,利用epoll的IO多路复用模式,可以同时处理多个请求。
  • 项目采用主从Reactor模式,主线程利用evconnlistener监听连接事件,收到事件后触发回调函数。在回调函数中建立bufferevent,设置读、写、事件回调,然后随机分配到子线程的event_base中,用于管理事件循环。当读回调触发时,会把将任务提交到任务队列。
  • 任务队列里面有了任务之后,线程池中睡眠的worker线程将被唤醒,进行解析HTTP报文,目标文件或者目录的读取,以及http回复报文的封装;
  • 支持http长连接,使用基于小根堆的定时器实现应用层保活机制,当客户端和服务端长达一定时间没有进行数据交互时,触发event_cb关闭连接。