[英]Netty long polling client aggregator never finds end of message
我有一個使用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));
}
}
我想到了。 我無法控制服務器發送的內容,也沒有發送空白的Http消息或其他指示每條消息結束的指示符。 我必須為分塊編寫自己的處理程序,因此可以確保由於數據流中沒有中斷,它可以正確地分塊。 我以HttpObjectAggregator代碼為例,並添加了自己的邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.