c++ 开发的 http server & WebSocket server

2019 年 12 月 14 日
 kekxv

没错,我又来了宣传轮子了 kProxyCpp

https://github.com/kekxv/kProxyCpp

kProxyCpp 服务端软件

承接自 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

3489 次点击
所在节点    程序员
6 条回复
yujincheng08
2019 年 12 月 15 日
看着不错,支持做正向代理吗?
btw,我之前用的是 https://github.com/civetweb/civetweb
different
2019 年 12 月 15 日
c++ WebSocket client 有木有推荐一波?
kekxv
2019 年 12 月 15 日
@yujincheng08
正向代理的话没加进去,在考虑 ssl 问题,你可以试试 uwebsocket,这个支持客户端以及服务点
@different
uwebsocket 看一下?
这个的话之后再看看有时间加进去,和之前说的,ssl 问题
different
2019 年 12 月 16 日
@kekxv uwebsocket 貌似只有服务端吧?
liww
2 月 10 日
@kekxv 你好,哥,我这边最近在研究 uwebsocket ,node+uwebsocket ,那个广播订阅如果当连接数上到 1.5w+的时候,连续广播订阅消息,有些链接会出现背压,然后就会累积到内存,导致 websocket 服务端内存迅速增加,然后内存就爆了,你在线的时候可以回复下我吗?
kekxv
2 月 10 日
@liww 不了解你的场景(如果你是因为广播消息数据量较大,可以考虑服务器只通知客户端有新数据,让客户端自己主动去拉数据,而不是循环去发送,这样客户端可以选择使用 websocket 获取新消息或者使用 http 。如果你是其他场景的话,可以考虑是否真的需要高实时性,如果不是,可以考虑从这方面进行优化)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/629097

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX