Ófullkomnar myndir gjøgnum proxy: kannaðu skrivingaravslutning Netty
Tá myndir koma ófullkomnar gjøgnum proxy, kanna um upprunin letur Netty-rásina aftur, áðrenn tann asynkrona skrivingin av svarrinum er liðug.
Ein mynd virkar gjøgnum skjóta beina samband, men er ófullkomin gjøgnum eitt seinni forward-proxy. Ein møgulig orsøk er, at upprunin letur sambandið aftur, meðan svarið uppá honum enn verður skrivað.
Netty I/O er asynkront. At koma aftur úr writeAndFlush merkir ikki, at tann handlingurin er liðug. Tí er henda raðfylgjan ikki trygg fyri eitt svar, sum enn hevur bytes í rað:
ctx.writeAndFlush(response);
ctx.close();
Tá HTTP-umsitingin við vilja latast aftur eftir síðstu svarboð síni, fest tá afturlatingina at future-ini av tí skrivingini:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
Brotstykkið gongur út frá, at svarið longu er rætt bygt og rammað. Fyri eitt streamað krops, brúka avslutningin av tí síðstu boðini, ikki skrivingina av høvdisbólkunum. Fyri eitt varandi HTTP-samband, set ikki eina afturlating afturat bara tí, at eitt svar endaði.
Kanna miseydnaðu future sum part av vanligu villumeðferðini í applikatiónini. Avslutningur fevnir um miseydnað og avlýsing, so avslutningur eina og sær er ikki ein móttøkukvittan frá kagganum.
Samanberingin, sum er nyttug, er full longd svarsins og úrslitið av skrivingini á hvørjum slóði. Eitt proxy kann broyta tíðina nóg mikið at avdúka eina verandi lívssyklusvilla; at hon er til prógvar ikki, at kompressarin ella caches hjá tí kastaði bytesunum.