簡體   English   中英

Netty長輪詢客戶端聚合器永遠找不到消息結尾

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM