概述
服务端部分前面已介绍完成,今天开始我们介绍客户端部分。
客户端对应的模块是cip-client,本质上是独立部署和运行的,放在平台工程中仅为了方便管理。
客户端部分设计与实现与服务端非常类似,甚至是公用同一个类,我们重点介绍下有差异的地方。
启动框架
先来说一说启动框架,依旧是netty的标准启动模式,与服务端不同的时,并不需要bossGroup来处理连接,只需要一个workerGroup用于实际业务处理。
监听的端口通过读取配置文件实现。启动、捕获异常,最后进行优雅的关闭。
相比服务端标准模式而言,客户端启动类有比较多需要注意的地方,关键的逻辑有两个:
一是客户端需要处理自动重连,这里实际是两种情况,一种是客户端刚启动的时候,尝试去连接服务端,如不成功,则休眠5秒后再次重试;另外一种是出现异常时,包括原先建立连接、正常通信的情况下因为各种原因导致通道失效、心跳异常、服务端退出等,都会自动尝试重连,这样可以确保出现问题时无需系统管理员手工干预,自动重连来恢复运行。
二是连接成功后,要发起WebSocket的握手操作,将http协议升级为websocket协议,关键在于自实现的WebSocketClientHandshakerHandler处理器,这块后面会详细说。
package tech.pop