github项目推荐:ratel
技术栈:Netty
码云:https://gitee.com/ainilili/ratel
Github:https://github.com/ainilili/ratel
相关介绍:https://github.com/ainilili/ratel/blob/master/PROTOCO_CN.md
一、项目介绍
Ratel 是一个可以在命令行中玩斗地主的项目。
可以使用小巧的jar包在拥有JVM环境的终端中进行游戏,支持人人对战和人机对战两种模式,丰富你的空闲时间!
二、目录框架
客户端(landlords-client)
event:客户端事件包
handle:客户端事件处理包
SimpleClient:客户端启动程序
基础包:landlords-common
channel:管道工具包
entity:实体类目录
enums:枚举类型目录
exception:异常处理目录
handler:业务处理,包含消息转码工具类
helper:工具类包,包括时间工具类等
print:打印工具包目录,包括格式化输出的工具类
robot:机器人出牌目录,人机对战时使用
transfer:类型转换工具包目录
utils:基础工具类,包括集合、正则等工具类
服务端(landlords-server)
event:服务端端事件包
handler:客户端事件处理包
robot:机器人出牌目录,人机对战时使用
timer:定时任务目录,计算房间存活时间。
SimpleServer:服务端启动程序
来自项目开发文档,最重要的架构图:
三、项目运行
1、clone项目
git clone https://github.com/ainilili/ratel.git
2、运行客户端和服务器
java -jar landlords-server/target/landlords-server-1.1.0.jar -p 1024
java -jar landlords-client/target/landlords-client-1.1.0.jar -p 1024 -h 127.0.0.1
3、开始打牌
四、Netty原理
1、初始化创建 2 个 EventLoopGroup,其中 parentGroup 用于 Accetpt 连接建立事件并分发请求。childGroup 用于处理 I/O 读写事件和业务逻辑。
2、基于 ServerBootstrap (服务端启动引导类),配置 EventLoopGroup、Channel 类型,连接参数、配置入站、出站事件 handler
3、绑定端口,开始工作
五、文章最后
想知道Netty怎么使用吗!!!
想了解如何使用适配器设计模式吗!!!
最重要的是想摸鱼打牌吗!!!
所有的一切都被放在了那里,去找吧!!!
项目需要对Netty框架有一定的了解。
Netty相关资料:https://blog.csdn.net/qq_35751014/category_9722459.html
入门项目:https://blog.csdn.net/awsl_6699/article/details/115603301