ສຳລັບ bootstrap/pipeline ຂອງ Netty ທີ່ມີຢູ່ແລ້ວ ທີ່ເຊີບເວີ SOCKS ຄວນແກ້ໄຂຈຸດໝາຍ:

bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);

pipeline.addFirst(
    new Socks5ProxyHandler(new InetSocketAddress("127.0.0.1", 1080))
);

bootstrap.connect(
    InetSocketAddress.createUnresolved("example.com", 443)
);

ຈຸດສຸດທ້າຍຂອງພຣັອກຊີແມ່ນພອດທ້ອງຖິ່ນ 1080; ເປົ້າໝາຍການເຊື່ອມຕໍ່ທີ່ຍັງບໍ່ໄດ້ແກ້ໄຂແມ່ນ example.com:443. ຢ່າໃຊ້ທີ່ຢູ່ພຣັອກຊີສຳລັບທັງສອງບົດບາດ ແລະ ຢ່າແກ້ໄຂຊື່ກ່ອນທີ່ handler ຈະໄດ້ຮັບມັນ. ສຳລັບເປົ້າໝາຍສາທາລະນະໃນເສັ້ນທາງພຣັອກຊີສາທາລະນະທີ່ອະນຸຍາດ, ລາຍການພຣັອກຊີ SOCKS5 ໃຫ້ຜູ້ສະໝັກສຳລັບຈຸດສຸດທ້າຍພຣັອກຊີຂອງ handler.

ວາງ Socks5ProxyHandler ກ່ອນ handler ທີ່ແລກປ່ຽນການສັນຈອນຈຸດໝາຍ. ລໍຖ້າ future ຂອງການເຊື່ອມຕໍ່ພຣັອກຊີ, ບໍ່ແມ່ນພຽງແຕ່ channel ທີ່ຮອດຜູ້ຟັງ. ວິທີການ ຫຼື ຈຸດໝາຍທີ່ຖືກປະຕິເສດເປັນຂອງຂັ້ນຕອນຕັ້ງຄ່ານີ້.

ສຳລັບ HTTPS, ຊັ້ນ TLS ຕໍ່ໄປໃຊ້ຊື່ໂຮສຂອງຈຸດໝາຍ, ການກວດສອບ ແລະ ຄວາມໄວ້ວາງໃຈທີ່ຕ້ອງການ—ບໍ່ແມ່ນຕົວຕົນຂອງຈຸດສຸດທ້າຍ SOCKS. ຫຼັງຈາກນັ້ນການແລກປ່ຽນ HTTP/ແອັບພລິເຄຊັນຈຶ່ງເລີ່ມ.

ສ່ວນນີ້ບໍ່ໃຫ້ event loop, ຊະນິດ channel, handler TLS/HTTP ຫຼື ການຈັດການຂໍ້ຜິດພົດປົກກະຕິ. ເລືອກ constructor SOCKS ທີ່ເໝາະກັບຄວາມຕ້ອງການການພິສູດຕົວຕົນ; handler HTTP Basic ແມ່ນໂປຣໂຕຄໍລອື່ນ.

ໃຊ້ resolver no-op ສະເພາະບ່ອນທີ່ handler ທາງລຸ່ມນີ້ເປັນເຈົ້າຂອງການແກ້ໄຂຊື່ໂຮສ. ການເຊື່ອມຕໍ່ອື່ນອາດຕ້ອງການການຄົ້ນຫາທ້ອງຖິ່ນ. ຮັກສາຜົນລັບຂອງ resolver, future ພຣັອກຊີ, TLS ແລະ ຜົນຂອງແອັບພລິເຄຊັນແຍກກັນ ເມື່ອວິນິດໄສຄວາມຜິດພາດ.

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