diff --git a/src/main/java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java b/src/main/java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java index 59dc1e6..926e658 100644 --- a/src/main/java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java +++ b/src/main/java/cn/org/hentai/jtt1078/server/Jtt1078Handler.java @@ -12,8 +12,9 @@ import io.netty.util.AttributeKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import java.util.Iterator; +import io.netty.handler.timeout.IdleState; +import io.netty.handler.timeout.IdleStateEvent; /** * Created by matrixy on 2019/4/9. @@ -88,6 +89,18 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws E ctx.close(); } + @Override + public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { + if (IdleStateEvent.class.isAssignableFrom(evt.getClass())) { + IdleStateEvent event = (IdleStateEvent) evt; + if (event.state() == IdleState.READER_IDLE) { + String tag = SessionManager.get(ctx.channel(), "tag"); + logger.info("read timeout: {}",tag); + release(ctx.channel()); + } + } + } + private void release(io.netty.channel.Channel channel) { String tag = SessionManager.get(channel, "tag");