Eit bilete fungerer over ei rask direkte tilkopling, men er ufullstendig gjennom ein tregare forward-proxy. Ein mogleg årsak er at opphavet lukkar tilkoplinga medan svaret enno blir skrive.

Netty I/O er asynkron. Å returnere frå writeAndFlush tyder ikkje at operasjonen er fullført. Denne rekkjefølgja er derfor utrygg for eit svar som framleis har byte i kø:

ctx.writeAndFlush(response);
ctx.close();

Når HTTP-utvekslinga med vilje blir lukka etter den siste svarmeldinga, knytt lukkinga til future-en for den skrivinga:

ctx.writeAndFlush(finalResponseMessage)
    .addListener(ChannelFutureListener.CLOSE);

Utdraget føreset at svaret allereie er riktig bygd og ramma inn. For ein strøymd body bruk fullføringa av den siste meldinga, ikkje skrivinga av hovuda. For ei varig HTTP-tilkopling må du ikkje leggje til ei lukking berre fordi eit svar er ferdig.

Undersøk feilen i future-en som ein del av den normale feilhandteringa i applikasjonen. Fullføring omfattar feil og avbryting, så fullføring åleine er ikkje ei leveringskvittering frå nettlesaren.

Den nyttige samanlikninga er den fulle svarlengda og skriveresultatet på kvar veg. Ein proxy kan endre timinga nok til å avdekkje ein eksisterande livssyklusfeil; tilstade hans beviser ikkje at kompressoren eller hurtigbufferen kasta byta.

Relaterte artiklar