package cn.flightfeather.supervision.infrastructure.test;
|
|
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.Unpooled;
|
import io.netty.channel.ChannelFutureListener;
|
import io.netty.channel.ChannelHandler;
|
import io.netty.channel.ChannelHandlerContext;
|
import io.netty.channel.ChannelInboundHandlerAdapter;
|
import io.netty.util.CharsetUtil;
|
|
@ChannelHandler.Sharable
|
public class EchoServerHandler extends ChannelInboundHandlerAdapter {
|
|
@Override
|
public void channelRead(ChannelHandlerContext ctx, Object msg) {
|
ByteBuf in = (ByteBuf) msg;
|
System.out.println("Server received: " + in.toString(CharsetUtil.UTF_8));
|
ctx.write(in);//将接收到的消息写给发送者,而不冲刷出站消息,
|
}
|
|
@Override
|
public void channelReadComplete(ChannelHandlerContext ctx) {
|
ctx.writeAndFlush(Unpooled.EMPTY_BUFFER) //flush掉所有写回的数据
|
.addListener(ChannelFutureListener.CLOSE); //当flush完成后关闭channel,将未决消息冲刷到远程节点,并且关闭该Channel
|
}
|
|
@Override
|
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
|
cause.printStackTrace();//捕捉异常信息
|
ctx.close();//出现异常时关闭channel
|
}
|
}
|