Pilt töötab kiire otsese ühenduse kaudu, kuid on aeglasema edasisaatva puhverserveri kaudu puudulik. Üks võimalik põhjus on see, et allikas sulgeb ühenduse, kui selle vastust alles kirjutatakse.

Netty I/O on asünkroonne. writeAndFlush-ist naasmine ei tähenda, et see toiming on lõppenud. Seetõttu ei ole selline järjekord ohutu vastuse jaoks, millel on veel järjekorras baite:

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

Kui HTTP-vahetus suletakse tahtlikult pärast selle viimast vastusesõnumit, kinnitage sulgemine selle kirjutamise future'i külge:

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

Katkend eeldab, et vastus on juba õigesti koostatud ja raamitud. Voogedastatud keha puhul kasutage selle viimase sõnumi lõppu, mitte päiste kirjutamist. Püsiva HTTP-ühenduse puhul ärge lisage sulgemist ainult seetõttu, et vastus lõppes.

Uurige future'i ebaõnnestumist rakenduse tavapärase veakäsitluse osana. Lõppemine hõlmab ebaõnnestumist ja tühistamist, seega ei ole lõppemine üksi brauseri kohaletoimetamise kviitung.

Kasulik võrdlus on vastuse täispikkus ja kirjutamise tulemus igal teel. Puhverserver võib ajastust muuta piisavalt, et paljastada olemasolev elutsükli viga; selle olemasolu ei tõenda, et selle kompressor või vahemälu baidid kõrvale heitis.

Seotud artiklid