承接自 kHttpd 项目。

由于 kHttpd 项目使用了 libevent 开源库,其中某些特性导致使用上面不太方面(仅仅指的是我个人而言),所以重新开发了本项目。

功能说明

  1. http server 实现, http server 服务端功能,使用线程池为每个连接进行处理,所以每个请求都可以阻塞(但是并不建议,除非某种特定的场景,例如进行http代理服务,必须等到对方回应,不使用 libevent 其中一个原因)。

  2. WebSocket server 实现,当前项目实现了WebSocket server端代码,可以使用 c/c++ 愉快的开发WebSocket项目,同时WebSocket服务端也支持http server,也就是同一个端口同时使用WebSocket server 以及 http server,使得更方便一些。使用WebSocket server的情况下,请根据实际情况,加大线程数量以及监听数量,否则可能造成后续连接被阻塞。

  3. CGI 功能实现,目前实现 CGI 调用 php,可以使用php作为动态脚本进行开发,不过现在还未实现 phpPOST模式,即还未将 php body数据传入给CGI

为什么要开发本项目

目前的 CPU 性能已经非常好了,同时像 c#phpJavanodejsgo 等等语言对于http server以及WebSocket server开发已经非常棒了,为什么还要造这种轮子呢?

的确,他们非常好,但是某些情况下,我还是喜欢使用 c/c++ 来进行开发(应该有人和我一样吧)。

在某些项目上,需要使用到 OpenCV 进行图像处理,嗯,C# 也有EmguCV以及OpenCVSharp等等,使用起来也很方便,不过总觉得不太方便,可能是 c/c++ 写多了,毕竟身边的大多数人,都是比较喜欢使用 EmguCV以及OpenCVSharp

在上述的这些项目上,如果要发布为WebAPI形式,也有不少的选择,但是基本需要第三方工具(当然用 libevent 等项目也是不错的),我希望能够很简单的就讲项目发布为WebAPI,所以我决定开发了本项目(为什么不用 libeventhttp server呢?emmmmm,前面说了)。

树莓派 zero

目前树莓派 4B 已经出来蛮久的了,性能也很强,不过如果追求的小的解决方案,当时是选择 树莓派zero,但是树莓派zero性能并没有特别优秀,如果使用pythonnodejs之类做服务端的话,你知道我想说什么了吧,没错,可以考虑一下本项目。

当然了,如果想开发整站项目,emmmmm,还是不要选择本项目了吧,太为难自己了,本项目比较适合简单的项目之上。

学习目的

如果想要学习一下 http server 或者 WebSocket server 或者 CGI 实现的话,也可以看看本项目的代码,希望能对你有帮助。

版权问题

如果使用了本项目开发了开源项目或者修改的项目,欢迎贴上本项目链接

当前项目上使用了部分开源或者网络上的代码,如果这些代码是您的,并且有侵犯到您的个人利益,请联系我,我会根据实际情况,在此贴上您的源链接,或者进行修改删除。