Ver código fonte

内存泄露

liujunchi 2 anos atrás
pai
commit
3a8a377406

+ 5 - 0
audio-analysis/src/main/java/com/yonge/netty/server/handler/NettyServerHandler.java

@@ -1,5 +1,6 @@
 package com.yonge.netty.server.handler;
 
+import com.yonge.netty.server.service.UserChannelContextService;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelHandlerContext;
@@ -23,6 +24,8 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
 	@Autowired
 	private NettyChannelManager channelManager;
 
+	@Autowired
+	private UserChannelContextService userChannelContextService;
 	@Override
 	public void channelActive(ChannelHandlerContext ctx) {
 		// 从管理器中添加
@@ -31,6 +34,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
 
 	@Override
 	public void channelUnregistered(ChannelHandlerContext ctx) {
+		userChannelContextService.remove(ctx.channel());
 		// 从管理器中移除
 		channelManager.remove(ctx.channel());
 	}
@@ -38,6 +42,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
 	@Override
 	public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
 		LOGGER.error("[exceptionCaught][连接({}) 发生异常]", ctx.channel().id(), cause);
+		userChannelContextService.remove(ctx.channel());
 		// 断开连接
 		ctx.channel().close();
 	}