前一节咱们已经可以让服务端实现心跳检测了,在空闲时关闭连接,而且还让客户端通过不同的指令来发送不同的数据,并且把这些指令单独封装为了一个个的处理器,例如LoginHandler登录处理器T1、HeartBeatHandler心跳处理器T2和LocationHandler定微处理器T3。
接下来,还需要解决下面两个典型问题:
1、通过IMEI号保存会话的问题;
2、对于重复登录的判断。
首先,之前的业务需求明确了需要区分终端的在线或离线状态。由于在Netty中,客户端与服务端连接时都会启动一个新的线程,在每个线程中都有唯一的ChannelHandlerContext对象,它是当前客户端连接的唯一通道。所以,可以利用这个唯一通道和客户端的IMEI号实现会话管理。
为了将终端与Netty的ChannelHandlerContext关联起来,可以创建一个ChannelInfo类,这个类的作用就是维护连接和终端之间的关系: