From 3e9968f69fead0d105fb22739e5ba3ac36558527 Mon Sep 17 00:00:00 2001 From: jaysunxiao Date: Sat, 5 Jul 2025 13:42:10 +0800 Subject: [PATCH] ref[handler]: create session when channel is activate --- .../proxy/handler/TunnelClientRouteHandler.java | 11 +++++++++-- .../proxy/handler/TunnelServerRouteHandler.java | 17 ++++++++++++++++- .../com/zfoo/net/handler/BaseRouteHandler.java | 5 +++++ .../zfoo/net/handler/ClientRouteHandler.java | 4 ++-- .../zfoo/net/handler/ServerRouteHandler.java | 2 +- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/net/src/main/java/com/zfoo/net/core/proxy/handler/TunnelClientRouteHandler.java b/net/src/main/java/com/zfoo/net/core/proxy/handler/TunnelClientRouteHandler.java index 0e934358..ccad2a4f 100644 --- a/net/src/main/java/com/zfoo/net/core/proxy/handler/TunnelClientRouteHandler.java +++ b/net/src/main/java/com/zfoo/net/core/proxy/handler/TunnelClientRouteHandler.java @@ -17,17 +17,21 @@ import com.zfoo.net.NetContext; import com.zfoo.net.core.proxy.TunnelClient; import com.zfoo.net.core.proxy.TunnelProtocolClient2Server; import com.zfoo.net.core.proxy.TunnelProtocolServer2Client; -import com.zfoo.net.handler.ClientRouteHandler; +import com.zfoo.net.handler.BaseRouteHandler; import com.zfoo.net.session.Session; import com.zfoo.net.util.SessionUtils; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author jaysunxiao */ @ChannelHandler.Sharable -public class TunnelClientRouteHandler extends ClientRouteHandler { +public class TunnelClientRouteHandler extends BaseRouteHandler { + + private static final Logger logger = LoggerFactory.getLogger(TunnelClientRouteHandler.class); @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { @@ -35,12 +39,15 @@ public class TunnelClientRouteHandler extends ClientRouteHandler { TunnelClient.tunnels.add(ctx.channel()); var session = SessionUtils.getSession(ctx); ctx.channel().writeAndFlush(new TunnelProtocolClient2Server.TunnelRegister(session.getSid())); + logger.info("tunnel client activate in sid:[{}]", session.getSid()); } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelInactive(ctx); + var session = SessionUtils.getSession(ctx); TunnelClient.tunnels.remove(ctx.channel()); + logger.info("tunnel client inactivate in sid:[{}]", session.getSid()); } @Override diff --git a/net/src/main/java/com/zfoo/net/core/proxy/handler/TunnelServerRouteHandler.java b/net/src/main/java/com/zfoo/net/core/proxy/handler/TunnelServerRouteHandler.java index 912361c0..fb314b8a 100644 --- a/net/src/main/java/com/zfoo/net/core/proxy/handler/TunnelServerRouteHandler.java +++ b/net/src/main/java/com/zfoo/net/core/proxy/handler/TunnelServerRouteHandler.java @@ -14,19 +14,34 @@ package com.zfoo.net.core.proxy.handler; import com.zfoo.net.core.proxy.TunnelServer; +import com.zfoo.net.handler.BaseRouteHandler; import com.zfoo.net.handler.ServerRouteHandler; +import com.zfoo.net.util.SessionUtils; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author jaysunxiao */ @ChannelHandler.Sharable -public class TunnelServerRouteHandler extends ServerRouteHandler { +public class TunnelServerRouteHandler extends BaseRouteHandler { + + private static final Logger logger = LoggerFactory.getLogger(TunnelServerRouteHandler.class); + + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + + logger.info("tunnel server channel is active {}", SessionUtils.sessionInfo(ctx)); + } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { super.channelInactive(ctx); TunnelServer.tunnels.remove(ctx.channel()); + logger.warn("tunnel server channel is inactive {}", SessionUtils.sessionSimpleInfo(ctx)); } } diff --git a/net/src/main/java/com/zfoo/net/handler/BaseRouteHandler.java b/net/src/main/java/com/zfoo/net/handler/BaseRouteHandler.java index 38c787cf..dc3f68a8 100644 --- a/net/src/main/java/com/zfoo/net/handler/BaseRouteHandler.java +++ b/net/src/main/java/com/zfoo/net/handler/BaseRouteHandler.java @@ -48,6 +48,11 @@ public abstract class BaseRouteHandler extends ChannelInboundHandlerAdapter { return session; } + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + super.channelActive(ctx); + initChannel(ctx.channel()); + } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { diff --git a/net/src/main/java/com/zfoo/net/handler/ClientRouteHandler.java b/net/src/main/java/com/zfoo/net/handler/ClientRouteHandler.java index 634d57fe..e20219b0 100644 --- a/net/src/main/java/com/zfoo/net/handler/ClientRouteHandler.java +++ b/net/src/main/java/com/zfoo/net/handler/ClientRouteHandler.java @@ -35,7 +35,8 @@ public class ClientRouteHandler extends BaseRouteHandler { @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { super.channelActive(ctx); - var session = initChannel(ctx.channel()); + + var session = SessionUtils.getSession(ctx); NetContext.getSessionManager().addClientSession(session); logger.info("client channel is active {}", SessionUtils.sessionInfo(ctx)); EventBus.post(ClientSessionActiveEvent.valueOf(session)); @@ -46,7 +47,6 @@ public class ClientRouteHandler extends BaseRouteHandler { super.channelInactive(ctx); var session = SessionUtils.getSession(ctx); - if (session == null) { return; } diff --git a/net/src/main/java/com/zfoo/net/handler/ServerRouteHandler.java b/net/src/main/java/com/zfoo/net/handler/ServerRouteHandler.java index 03ccc3de..a0262435 100644 --- a/net/src/main/java/com/zfoo/net/handler/ServerRouteHandler.java +++ b/net/src/main/java/com/zfoo/net/handler/ServerRouteHandler.java @@ -34,7 +34,7 @@ public class ServerRouteHandler extends BaseRouteHandler { @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { super.channelActive(ctx); - var session = initChannel(ctx.channel()); + var session = SessionUtils.getSession(ctx); NetContext.getSessionManager().addServerSession(session); logger.info("server channel is active {}", SessionUtils.sessionInfo(ctx)); EventBus.post(ServerSessionActiveEvent.valueOf(session));