网狐服务端C++引入http功能剖析

旗舰版本的网狐服务端及以前的版本都是没有http解析功能的,导致就是web后台改了配置不能及时通知到游戏里面去,以至于很多小公司拿这种框架来开发的变通的方案就是用定时器不定时去刷数据库,导致多少个功能就有多少个定时去刷新,代码臃肿,效率非常差。这个也是框架设计上的不足。

其实这里面要加入一个高效的http功能也并不困难,C++发展了几十年,优秀的中间件可以说是多如牛毛,这里就引入了著名的开源的C语言编写的libevent网络底层库,该库主要有以下几个优点:事件驱动( event-driven),高性能;轻量级,专注于网络再引入一个开源的JSONCPP数据解析库 ,用来解析传输的数据 ,这样就可以轻易而举地拥有了http的解析功能,下面且看实战示例。

先把jsoncpp和libevent工程从网上下载下来,引入工程。

网狐服务端C++引入http功能剖析_第1张图片

这里把http功能放到协调服务器里面去实现 ,先把两个开源库编译好的静态库文件引进来

网狐服务端C++引入http功能剖析_第2张图片

先初始化网络库和端口以及设置消息回调函数

网狐服务端C++引入http功能剖析_第3张图片

接收消息的底层的繁锁处理,已经由网狐框架的CAttemperEngineSink封装处理好了的,这部分不需要展开,需要理解的可以看我另一篇文章去理解。

上面说到他这个是事件驱动的网络库,那么就需要在事件里面每500毫秒派发一下事件

网狐服务端C++引入http功能剖析_第4张图片
网狐服务端C++引入http功能剖析_第5张图片

当事件派发时,前面设置了事件回调函数,那么最终libevent的底层会回调 OnServerPostCallBack

网狐服务端C++引入http功能剖析_第6张图片

Json::Reader reader;

Json::Value root;这两个类就是解析json用的,简便易用,非常方便,用来转化成字符串进行数据库存储也是非常好用的工具。

接着就到业务解析了

网狐服务端C++引入http功能剖析_第7张图片

至此一个C++ 工程引入http功能大功告成,这样后端开发就可以快乐地玩耍了。

抛砖引玉,有人有不同见解的可以相互交流学习一下。

你可能感兴趣的:(c++,感悟,计算机,c++,http)