RpcKit
介绍
基于游戏服务器业务需要,超简易的服务器通信工具,目的是开箱即用!
Server
NettyServer server = new RpcServerServiceImpl(serverport);
server.start();
然后 服务器业务类继承NettyServer并实现相关方关即可开始处理业务部分,参考RpcServerImpl.java
Client
RpcClientServiceImpl client = new RpcClientServiceImpl(serveraddress, severport);
client.connect();
然后 客户端业务类继承NettyClient并实现相关方关即可开始处理业务部分,参考RpcClientImpl.java
关于封装
传输消息同一封装成RpcMsg,分Request和Response. request会直接跳到业务部分代码, response只处理回调不会走到业务部分.RpcMsg还有个心跳消息.
关于心跳问题,这里采用暴力实现:客户端固定时间发送心跳包,超时就断开!
上层业务需要处理业务消息转成二进制byte[],然后规划好logicPot和logicType.并转换成RpcMsg对象传给对应发送方法,对面的程序就会收到.
设计上服务器直接只需要一条对应的连接,然后各个模块使用不同的logicPot, 同一个模块不同业务使用不同logicType.
支持阻塞通信和非阻(回调模式)塞通信.
java9以上版本运行异常"Usafe"处理方式:在jvm启动参数添加
--add-opens java.base/jdk.internal.misc=ALL-UNNAMED
-Dio.netty.tryReflectionSetAccessible=true