Et bilde fungerer over en rask direkte forbindelse, men er ufullstendig gjennom en langsommere forward-proxy. En mulig årsak er at opprinnelsen lukker forbindelsen mens svaret fortsatt skrives.

Netty I/O er asynkront. Å returnere fra writeAndFlush betyr ikke at operasjonen er fullført. Denne rekkefølgen er derfor utrygg for et svar som fortsatt har bytes i køen:

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

Når HTTP-utvekslingen med vilje lukkes etter sin siste svarmelding, knytt lukkingen til future-en for den skrivingen:

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

Utdraget forutsetter at svaret allerede er riktig bygget og innrammet. For en strømmet kropp bruk fullføringen av dens siste melding, ikke skrivingen av hodene. For en vedvarende HTTP-forbindelse må du ikke legge til en lukking bare fordi et svar er ferdig.

Undersøk feilen i future-en som en del av applikasjonens normale feilhåndtering. Fullførelse omfatter feil og kansellering, så fullførelse alene er ikke en leveringskvittering fra nettleseren.

Den nyttige sammenligningen er den fulle svarlengden og skriveresultatet på hver vei. En proxy kan endre timingen nok til å avdekke en eksisterende livssyklusfeil; dens tilstedeværelse beviser ikke at kompressoren eller hurtigbufferen kastet bytene.

Relaterte artikler