У меня есть длинный клиент опроса, реализованный с Netty, чтобы принять поток отдыха. Он работает, если я вынимаю декомпрессор и агрегатор, но размер моего куска ограничен. Я попытался увеличить размер куска, который работает, но я беспокоюсь, что в какой-то момент можно получить очень большое сообщение.Netty длинный опросчик-агрегатор клиентов никогда не находит конца сообщения
Когда я добавляю агрегатор, как показано ниже, поток данных не проходит, все его собирают и агрегируют и выгружают в конце, когда программа завершается. Как я могу сигнализировать агрегатору, что сообщение завершено? Или есть другой подход, который я должен использовать. Благодаря!
Мой обработчик - это реализация SimpleChannelInboundHandler.
public class SecureNestChannelInitializer extends ChannelInitializer<SocketChannel> {
private final SslContext sslCtx;
private final NestStreamingClient client;
public SecureNestChannelInitializer(SslContext sslCtx, NestStreamingClient client) {
this.sslCtx = sslCtx;
this.client=client;
}
@Override
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
// Add SSL handler first to encrypt and decrypt everything.
pipeline.addLast(sslCtx.newHandler(ch.alloc(), client.getHost(), client.getPort()));
pipeline.addLast(new HttpClientCodec());
// Remove the following line if you don't want automatic content decompression.
pipeline.addLast("inflater", new HttpContentDecompressor());
// Uncomment the following line if you don't want to handle HttpChunks.
pipeline.addLast("aggregator", new HttpObjectAggregator(1048576));
pipeline.addLast(new NestClientHandler(client));
}
}
Вы не можете делать потоковое видео с автоматической агрегацией, вам нужно вручную добавить сообщения, если вы хотите реализовать потоковое вещание. – Ferrybig
спасибо, я не видел вашего ответа, но понял это. – user3561836