【Github】项目名:antnet:Golang编写的游戏服务器网络框架
一、项目简介
antnet是一个用Golang编写的游戏服务器网络框架。它有着丰富的功能,例如多种类型的解析器、消息队列的抽象处理、广播与组播消息的特殊处理等。框架在设计上充分考虑了Go语言的特性,代码结构组织合理,相关功能代码聚集,方便查找,像以parser打头的文件表示解析器相关,msgque打头的文件表示消息队列相关。
二、项目目的
构建一个适用于游戏服务器开发的网络框架,满足游戏开发中的网络通信、消息处理等需求,提高游戏服务器开发的效率和性能。
三、核心技术
1. 多种解析器类型:
– 拥有六种解析器类型,包括protobuf类型(ParserTypePB)用于和客户端交互、cmd类型(ParserTypeCmd)类似telnet指令用于直接和程序交互、json类型(ParserTypeJson)可用于客户端或者服务器之间交互、msgpack类型(ParserTypeMsgpack)可用于客户端或者服务器之间交互、自定义类型(ParserTypeCustom)以及不做任何解析的类型(ParserTypeRaw)。
– 每个解析器需要一个Type字段表示解析器类型,ErrType字段决定消息解析失败之后的默认行为,有发送提醒消息(ParseErrTypeSendRemind)、跳过本条消息(ParseErrTypeContinue)、解析失败依然处理(ParseErrTypeAlways)、解析失败则关闭连接(ParseErrTypeClose)这四种方式。
2. 消息队列抽象:
– 将来自tcp、udp、websocket的数据流抽象为消息队列,并且根据是否带有消息头分为MsgTypeMsg(基于确定的消息头)和MsgTypeCmd(消息没有消息头,以\n分割)两种类型。
3. 处理器设计:
– 处理器需要实现IMsgHandler接口,包含新消息队列处理(OnNewMsgQue)、消息队列关闭处理(OnDelMsgQue)、默认消息处理函数(OnProcessMsg)、连接成功处理(OnConnectComplete)、根据消息获得处理函数(GetHandlerFunc)等功能。
– 可通过在处理器中添加antnet.DefMsgHandler定义来简化操作,其中也有类似解析器的Register和RegisterMsg函数用于区分不同输入。
4. 日志系统:
– 有着不同的日志等级,包括开放所有日志(LogLevelAllOn)、调试信息(LogLevelDebug)、资讯讯息(LogLevelInfo)、警告状况发生(LogLevelWarn)、一般错误(LogLevelError)、严重错误(LogLevelFatal)、关闭所有日志(LogLevelAllOff),通过antnet.Logxxx即可输出不同等级的日志。
5. Redis封装:
– antnet对redis进行了封装,antnet.Redis主要记录了对eval指令的处理,能够把预先生成的lua脚本上传到redis得到hash,以后使用evalsha命令进行调用,还有RedisManager用于管理一组redis数据库。
6. 定时器:
– 基于时间轮的计时器,精度是毫秒,用于定时器使用。
7. 数据模型:
– 自带基于redis的数据模型处理,使用protobuf作为数据库定义语言,默认情况下,redis内部存储的数据是msgpack格式的,方便在处理时转换为protobuf数据流发给客户端。
四、实践案例
1. 已服务全球数千万玩家,部分商业游戏案例包括《街篮2》(https://www.taptap.com/app/175459)、《灌篮高手》(https://www.taptap.com/app/154129)。
2. 支持H5研发,如微信小程序中的《美食大战老鼠2》《街机三国3》等。
3. 有一个websocket的测试框架wsserver(https://github.com/magiclvzs/wsserver),用不到60行逻辑代码实现了基于websocket + protobuf的聊天系统。
五、项目总结
antnet是一个功能丰富、设计合理的游戏服务器网络框架。它在多个方面有着独特的设计,如利用Go语言特性、考虑网络细节等,并且在实际应用中有诸多成功案例。希望大家对这个项目感兴趣的话可以留言一起讨论,分享自己的见解或者使用过程中的经验等。
项目地址
数据统计
数据评估
本站链氪巴士提供的antnet:Golang编写的游戏服务器网络框架都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由链氪巴士实际控制,在2024年12月6日 上午12:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,链氪巴士不承担任何责任。
相关导航
Bluesky Social application is available on Web, iOS, and Android. It is a React Native app written in TypeScript with some Golang code. Part of the ATProtocol ecosystem, it has its own set of schemas and APIs. Contributions are accepted with specific rules. Security issues can be reported via email. It is an open - source project under the MIT license. This app offers an alternative in the social media landscape and has its own development and contribution guidelines.