ຮູບພາບໜຶ່ງເຮັດວຽກໄດ້ໃນການເຊື່ອມຕໍ່ໂດຍກົງທີ່ໄວ, ແຕ່ມາບໍ່ຄົບຖ້ວນຜ່ານ proxy ສົ່ງຕໍ່ທີ່ຊ້າກວ່າ. ສາເຫດໜຶ່ງທີ່ເປັນໄປໄດ້ແມ່ນຕົ້ນກຳເນີດປິດການເຊື່ອມຕໍ່ໃນຂະນະທີ່ຄຳຕອບຂອງມັນຍັງຖືກຂຽນຢູ່.

Netty I/O ເປັນອະສິງຄະໂຣນັດ. ການກັບມາຈາກ writeAndFlush ບໍ່ໄດ້ໝາຍຄວາມວ່າການດຳເນີນການນັ້ນສຳເລັດແລ້ວ. ດັ່ງນັ້ນລຳດັບນີ້ຈຶ່ງບໍ່ປອດໄພສຳລັບຄຳຕອບທີ່ຍັງມີໄບຕ໌ຢູ່ໃນຄິວ:

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

ເມື່ອການແລກປ່ຽນ HTTP ຖືກປິດໂດຍເຈດຕະນາຫຼັງຈາກຂໍ້ຄວາມຄຳຕອບສຸດທ້າຍຂອງມັນ, ໃຫ້ຕິດການປິດນັ້ນໃສ່ future ຂອງການຂຽນນັ້ນ:

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

ສ່ວນປະໂຫຍກນີ້ສົມມຸດວ່າຄຳຕອບຖືກສ້າງ ແລະ ຕັ້ງກອບຢ່າງຖືກຕ້ອງແລ້ວ. ສຳລັບເນື້ອຄວາມທີ່ສົ່ງເປັນສະຕຣີມ, ໃຫ້ໃຊ້ການສຳເລັດຂອງຂໍ້ຄວາມສຸດທ້າຍ ບໍ່ແມ່ນການຂຽນຫົວຂໍ້. ສຳລັບການເຊື່ອມຕໍ່ HTTP ແບບຕໍ່ເນື່ອງ, ຢ່າເພີ່ມການປິດພຽງເພາະຄຳຕອບຈົບແລ້ວ.

ກວດເບິ່ງຄວາມລົ້ມເຫຼວຂອງ future ເປັນສ່ວນໜຶ່ງຂອງການຈັດການຂໍ້ຜິດພາດປົກກະຕິຂອງແອັບຯ. ການສຳເລັດລວມມີຄວາມລົ້ມເຫຼວ ແລະ ການຍົກເລີກ, ດັ່ງນັ້ນການສຳເລັດຢ່າງດຽວບໍ່ແມ່ນໃບຢັ້ງຢືນການສົ່ງຈາກບຣາວເຊີ.

ການປຽບທຽບທີ່ເປັນປະໂຫຍດແມ່ນຄວາມຍາວຄຳຕອບທັງໝົດ ແລະ ຜົນຂອງການຂຽນໃນແຕ່ລະເສັ້ນທາງ. proxy ສາມາດປ່ຽນເວລາໄດ້ພໍທີ່ຈະເປີດເຜີຍຂໍ້ຜິດພາດວົງຈອນຊີວິດທີ່ມີຢູ່ແລ້ວ; ການມີຢູ່ຂອງມັນບໍ່ໄດ້ພິສູດວ່າຄອມເພຣສເຊີ ຫຼື ແຄຊຂອງມັນໄດ້ຖິ້ມໄບຕ໌ເຫຼົ່ານັ້ນ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ