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