可以传输较小的文件而没有任何问题,但是当我使用较大的文件时,套接字不活动并关闭,原因1006。Netty抛出以下异常:https://hastebin.com/paxibawuco.bash(IndexOutOfBoundsException)正确地发生了缓冲区溢出。
由于我使用的是LengthFieldBasedFrameDecoder
,因此不会出现此错误。它在每个发送的数据包之间使用500毫秒的计时器时也能正常工作。
@Override
protected void initChannel(SocketChannel channel) {
ChannelPipeline pipe = channel.pipeline();
pipe.addLast(ssl.newHandler(channel.alloc()));
pipe.addLast(new HttpServerCodec());
pipe.addLast(new HttpObjectAggregator(64 * 1024));
pipe.addLast(new WebSocketServerProtocolHandler("/websocket"));
pipe.addLast(new LengthFieldBasedFrameDecoder(64 * 1024, 0, 4, 0, 4));
pipe.addLast(new FrameDecoder());
pipe.addLast(new LengthFieldPrepender(4));
pipe.addLast(new FrameEncoder());
pipe.addLast(new ServerHandler());
}
有什么方法可以传输文件切片而不会阻塞线程或延迟发送数据包?