2016-04-14 30 views
0

sonu ben bir dinlenme akışını kabul edecek Netty ile uygulanan uzun yoklama müşterim var bulur asla. Açıcı ve toplayıcıyı çıkarırsam çalışır, ancak yığın boyutum sınırlıdır. Çalıştığım yığın büyüklüğünü artırmaya çalıştım, ama bir noktada ekstra büyük bir mesaj almanın mümkün olduğundan endişeleniyorum. aşağıda gösterildiği gibi Netty uzun yoklama istemci toplayıcı mesajının

Ben toplayıcı eklemek

, hiçbir veri 'akışları' aracılığıyla, hepsi toplanmış ve kümelenmiş ve program sonlandırıldığında sonunda dışarı terk edilir. Toplayıcıya mesajın bittiğini nasıl bildirebilirim? Ya da kullanmam gereken başka bir yaklaşım var. Teşekkürler!

Benim işleyicisi SimpleChannelInboundHandler bir uygulamasıdır.

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)); 
} 

}

+0

, size – Ferrybig

+0

sayesinde akışı uygulamak istiyorsanız, ben cevabınızı görmedim elle mesajları eklemek gerekir, ancak anladım. – user3561836

cevap

0

ben bunu anladım. Sunucunun ne gönderdiğine dair kontrolüm yok ve boş bir Http mesajı ya da her mesajın sonunun başka bir göstergesi göndermiyor. Ben parçalama için kendi kod yazmak zorunda, bu yüzden düzgün veri akışında sonları eksikliği verilen yığını başlamıştı emin olabilir. HttpObjectAggregator kodunu örnek olarak kullandım ve kendi mantığımı ekledim. Otomatik toplayarak ile akış yapamaz

İlgili konular