Unfolsleine ôfbyldings fia in proxy: kontrolearje Netty syn skriuwerfoltôging
As ôfbyldings fia in proxy unfolslein oankomme, ûndersykje dan oft de oarsprong syn Netty-kanaal slút foardat it asynchrone skriuwen fan it antwurd foltôge is.
In ôfbylding wurket fia in snelle direkte ferbining, mar is unfolslein fia in stadiger forward-proxy. Ien mooglike oarsaak is dat de oarsprong de ferbining slút wylst syn antwurd noch skreaun wurdt.
Netty I/O is asynchroan. Weromkommen fan writeAndFlush betsjut net dat dy operaasje foltôge is. Dizze folchoarder is dêrom net feilich foar in antwurd dat noch bytes yn 'e wachtrige hat:
ctx.writeAndFlush(response);
ctx.close();
Wannear't de HTTP-útwikseling opsetlik slút nei syn lêste antwurdberjocht, heakje dan de sluting oan 'e future fan dy skriuwerij:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
It fragmint giet derfan út dat it antwurd al korrekt opboud en framed is. Foar in streamde body moat de foltôging fan syn lêste berjocht brûkt wurde, net it skriuwen fan 'e headers. Foar in permaninte HTTP-ferbining meie jo net allinne in sluting tafoegje omdat in antwurd dien is.
Undersykje it mislearjen fan 'e future as ûnderdiel fan 'e normale flerbehanling fan 'e applicaasje. Foltôging omfiemet mislearjen en annulearring, dus foltôging allinne is gjin leveringsbewiis fan 'e browser.
De nuttige ferliking is de folsleine antwurdlingte en it skriuwresultaat op elk paad. In proxy kin de timing genôch feroarje om in besteande libbenssyklusflater te iepenbierjen; syn oanwêzigens bewiist net dat syn kompressor of cache de bytes fuortsmiet.