本章主要实现服务端入栈、出栈处理的逻辑,包括心跳、登入、登出。
前期准备
实现真正业务逻辑前,还需要完成一些额外工作,就是在 part4(协议转换代码定义部分) 中涉及的接口需要先进行实现,才能确保后续业务逻辑的完整性。
1.首次入栈,主要对 channel 的生命周期进行管理,并且按照协议对心跳进行统一处理,设计为抽象类后续不再重复实现。
@Slf4j
public abstract class AbstractInboundHandler extends SimpleChannelInboundHandler<Object> {
@Resource
private ChannelGroupHelper channelGroupHelper;
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
channelGroupHelper.add(ctx.channel());
super.channelActive(ctx);
}
@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
channelGroupHelper.unregister(ctx.channe