承接自 kHttpd 项目。
由于 kHttpd
项目使用了 libevent
开源库,其中某些特性导致使用上面不太方面(仅仅指的是我个人而言),所以重新开发了本项目。
功能说明
http server
实现,http server
服务端功能,使用线程池为每个连接进行处理,所以每个请求都可以阻塞(但是并不建议,除非某种特定的场景,例如进行http代理服务,必须等到对方回应,不使用libevent
其中一个原因)。WebSocket server
实现,当前项目实现了WebSocket server
端代码,可以使用 c/c++ 愉快的开发WebSocket
项目,同时WebSocket
服务端也支持http server
,也就是同一个端口同时使用WebSocket server
以及http server
,使得更方便一些。使用WebSocket server
的情况下,请根据实际情况,加大线程数量以及监听数量,否则可能造成后续连接被阻塞。CGI
功能实现,目前实现CGI
调用php
,可以使用php
作为动态脚本进行开发,不过现在还未实现php
的POST
模式,即还未将php
body
数据传入给CGI
。
为什么要开发本项目
目前的 CPU 性能已经非常好了,同时像 c#
,php
,Java
,nodejs
,go
等等语言对于http server
以及WebSocket server
开发已经非常棒了,为什么还要造这种轮子呢?
的确,他们非常好,但是某些情况下,我还是喜欢使用 c/c++
来进行开发(应该有人和我一样吧)。
在某些项目上,需要使用到 OpenCV
进行图像处理,嗯,C#
也有EmguCV
以及OpenCVSharp
等等,使用起来也很方便,不过总觉得不太方便,可能是 c/c++
写多了,毕竟身边的大多数人,都是比较喜欢使用 EmguCV
以及OpenCVSharp
。
在上述的这些项目上,如果要发布为WebAPI
形式,也有不少的选择,但是基本需要第三方工具(当然用 libevent
等项目也是不错的),我希望能够很简单的就讲项目发布为WebAPI,所以我决定开发了本项目(为什么不用 libevent
的http server
呢?emmmmm,前面说了)。
树莓派 zero
目前树莓派 4B
已经出来蛮久的了,性能也很强,不过如果追求的小的解决方案,当时是选择 树莓派zero
,但是树莓派zero
性能并没有特别优秀,如果使用python
、nodejs
之类做服务端的话,你知道我想说什么了吧,没错,可以考虑一下本项目。
当然了,如果想开发整站项目,emmmmm,还是不要选择本项目了吧,太为难自己了,本项目比较适合简单的项目之上。
学习目的
如果想要学习一下 http server
或者 WebSocket server
或者 CGI
实现的话,也可以看看本项目的代码,希望能对你有帮助。
版权问题
如果使用了本项目开发了开源项目或者修改的项目,欢迎贴上本项目链接
当前项目上使用了部分开源或者网络上的代码,如果这些代码是您的,并且有侵犯到您的个人利益,请联系我,我会根据实际情况,在此贴上您的源链接,或者进行修改删除。