jwEngine
一个跨平台的c++lua服务器快速解决方案,该框架即可快速响应服务器开发工作,设计思想:“让事情变得更简单”。
网络底层采用libuv(node.js底层库),异步io助力使单线程也能释放澎湃动力,跨平台支持epoll、iocp、ipv6。框架支持tcp、udp/kcp、websocket、http,并保证了接口的一致性,使用了sol2将所有接口都导出到lua,可以选择用lua开发逻辑。
使用modern c++开发,尽可能的使用std::move、std::string_view减少内存复制。
该框架使用异步事件,不建议使用多线程,避免多线程上下文切换开销和破坏代码美感,网络部分和逻辑部分使用一个主事件循环驱动。建议的方案是多进程单线程的横向扩展,按照业务控制各个进程的粒度,当然mysql和redis可以加入到线程池中。
开源社区促进人类文明的进步
创建一个tcp服务器
只需要简单几行代码即可创建一个tcp高性能服务器,并自动处理数据包头和粘包(其中包头包含消息长度和协议号),构建一个完好的NetPacket交给你。
创建一个kcp服务器
c++的kcp服务器示例,快速构建你的帧同步服务器,保证消息的可靠性
创建一个websocket服务器
自动完成解析websocket协议工作
创建一个http服务器
http仅支持简单的get post请求
mysql和线程池
这次我们用lua示例:
任意扩展进程节点
你可以任意扩展你的进程,示例:
提供一个serialization序列化工具
类似于c++的语法,写起来非常简单,示例:
通过serialization工具可以生成c++或者lua代码,自动补全read()和write()函数,使得数据结构快速映射到SocketBuffer中。倘若该工具无法满足你,你也可以非常轻松的接入protobuff。
构建
你需要一个modern c++17编译器
vs2017 测试通过gcc version 9.3.0 测试通过进一步了解
更多使用示例请参考项目的example目录. 同时欢迎fork和贡献代码
获取开源
github中搜索:jwEngine
举报/反馈