ວາງການເຈລະຈາ SOCKS ຂອງ Netty ກ່ອນໂປຣໂຕຄໍລແອັບພລິເຄຊັນຂອງທ່ານ
ຈັດ handler ພຣັອກຊີ SOCKS ຂອງ Netty ກ່ອນການສັນຈອນແອັບພລິເຄຊັນ ແລະ ຮັກສາຈຸດໝາຍທີ່ຍັງບໍ່ໄດ້ແກ້ໄຂ ເມື່ອ DNS ທາງຝັ່ງພຣັອກຊີເປັນເຈດຕະນາ.
ສຳລັບ 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 ແລະ ຜົນຂອງແອັບພລິເຄຊັນແຍກກັນ ເມື່ອວິນິດໄສຄວາມຜິດພາດ.