Slika deluje prek hitre neposredne povezave, vendar je nepopolna prek počasnejšega forward proxyja. Eden od možnih vzrokov je, da izvor zapre povezavo, medtem ko se njegov odgovor še piše.

Vhodno-izhodne operacije Netty so asinhrone. Vrnitev iz writeAndFlush ne pomeni, da je operacija dokončana. Zato ta vrstni red ni varen za odgovor, ki ima še bajte v čakalni vrsti:

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

Ko se izmenjava HTTP namerno zapre po svojem zadnjem sporočilu odgovora, pripnite zaprtje na future tega pisanja:

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

Izsek predpostavlja, da je odgovor že pravilno sestavljen in uokvirjen. Za pretakano telo uporabite dokončanje njegovega zadnjega sporočila, ne pisanja glav. Za trajno povezavo HTTP ne dodajte zaprtja samo zato, ker se je odgovor končal.

Preverite neuspeh future v okviru običajnega obravnavanja napak v aplikaciji. Dokončanje vključuje neuspeh in preklic, zato dokončanje samo po sebi ni potrdilo o dostavi iz brskalnika.

Koristna primerjava je celotna dolžina odgovora in izid pisanja na vsaki poti. Posredniški strežnik lahko spremeni časovni potek dovolj, da razkrije obstoječo napako življenjskega cikla; njegova prisotnost ne dokazuje, da sta njegov kompresor ali predpomnilnik zavrgla bajte.

Sorodni članki