求解
Netty writeAndFlush客户端发送大数据包时直接断开连接,数据量小就没问题
找不到原因,求指点是哪里配置的问题
下面是配置的代码
workGroup = new NioEventLoopGroup();
Bootstrap bootstrap = new Bootstrap();
bootstrap.group(workGroup)
.channel(NioSocketChannel.class)
// 设置TCP长连接,TCP会主动探测空闲连接的有效性
.option(ChannelOption.SO_KEEPALIVE, true)
// 禁用Nagle算法,小数据时可以即时传输
.option(ChannelOption.TCP_NODELAY, true)
// 发送缓冲区大小
.option(ChannelOption.SO_SNDBUF, 256 * 1024)
// 接收缓冲区大小
.option(ChannelOption.SO_RCVBUF, 256 * 1024)
// Netty客户端channel初始化
.handler(nettyClientInitializer);
// 连接服务器ip、端口
ChannelFuture future = bootstrap.connect(nettyConfig.getHost(), nettyConfig.getPort());
//客户端断线重连逻辑
future.addListener((ChannelFutureListener) futureListener -> {
if (futureListener.isSuccess()) {
log.info("连接Netty服务端成功!!");
} else {
log.warn("连接Netty服务端失败,准备30s后进行断线重连!!");
futureListener.channel().eventLoop().schedule((Runnable) this::run, 30, TimeUnit.SECONDS);
}
});
channel = future.channel();
channel.pipeline()
.addLast(new JSONEncoder(NettyPacket.class,new JSONSerializer()))
.addLast(new JSONDecoder(NettyPacket.class,new JSONSerializer()))
.addLast(new IdleStateHandler(0, 120, 0, TimeUnit.SECONDS))
.addLast(nettyClientHandler);