文章目录
- 背景
- 模块简介
- 运行效果
- 服务端
- 客户端
- 断开客户端
- 代码走读
- 添加工厂类的扫描spring.factories
- 添加bean生成类
- 添加获取配置属性的类
- 评价
背景
近期有计划实现手动实现一下rpc远程调用的功能,主要用到spring boot、netty、zookeeper。
本博客是第一步,利用spring boot、netty实现长连接通讯。
代码托管到了gitee:
服务端:https://gitee.com/simple_projects/simple_dubbo_provider/tree/v.1.0.0
客户端:https://gitee.com/simple_projects/simple-dubbo-consumer/tree/v.1.0.0
模块简介
- server模块由服务端代码实现,程序会绑定和监听本地配置的端口
- client模块由客户端代码实现,程序主动连接配置的服务端host和port,连接成功之后,周期性的发送type为12的类型的数据包
运行效果
服务端
查看端口情况:
netstat -nat | grep 8080
客户端
查看端口情况(可以看到,服务端的8080端口状态变成了established,客户端也是)
断开客户端
查看端口情况,客户端的临时端口没有立刻关闭,而是处于time_wait的状态
代码走读
Server和Client的Bean需要装载到spring,而且Server和Client需要设置端口和host,必然要走Configuration的过程。
- 添加spring.factories
- 添加NettyServerAutoConfiguration等配置类,这个类不像@Component(在实例化bean的时候不考虑参数),可以读取application.yml里面的配置,然后再生成bean
- 添加xxxxProperties类,用于承接spring boot的配置信息
- 在MyApplicationRunner中进行启动后的相关事宜(服务端需要进行server的run,客户端为了测试方便,直接起了一个线程,重复的发送数据包)
下面以Server端的代码截图来举例
添加工厂类的扫描spring.factories
添加bean生成类
添加获取配置属性的类
评价
- 本次没有对代码进行详细的注释,见谅(之后的博客会对netty做详细的解读)