การตั้งค่าพร็อกซี XMPP ใน Smack 4.4 ด้วย ProxyInfo
เชื่อม ProxyInfo เข้ากับตัวสร้างการเชื่อมต่อ XMPP พร้อมการตั้งค่าแยกสำหรับพร็อกซี โดเมนบริการ และโฮสต์เซิร์ฟเวอร์
กำหนดค่าการเชื่อมต่อที่รับส่งสตรีม XMPP จริง การตั้งค่าพร็อกซีบน URLConnection ที่ไม่เกี่ยวข้องไม่เปลี่ยนเส้นทางการเชื่อมต่อ TCP ของ Smack ไปยังบริการรับส่งข้อความ
Smack 4.4 มีโรงงาน ProxyInfo สำหรับ HTTP, SOCKS4 และ SOCKS5 เชื่อมวัตถุที่ได้เข้ากับตัวสร้างการเชื่อมต่อ XMPP:
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.proxy.ProxyInfo;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
ProxyInfo proxy = ProxyInfo.forSocks5Proxy(
"proxy.example.net", 1080, proxyUser, proxyPassword
);
XMPPTCPConnectionConfiguration config =
XMPPTCPConnectionConfiguration.builder()
.setXmppDomain("chat.example.net")
.setHost("xmpp-node.example.net")
.setPort(5222)
.setProxyInfo(proxy)
.setSecurityMode(
ConnectionConfiguration.SecurityMode.required
)
.build();นี่คือส่วนของการกำหนดค่าสำหรับการติดตั้ง Smack 4.4 ที่มีอยู่ แอปพลิเคชันที่ล้อมรอบจะจัดการข้อยกเว้นที่ตรวจสอบแล้วของตัวสร้างและจัดหาข้อมูลรับรองของพร็อกซี โฮสต์และพอร์ตที่ระบุไว้แสดงถึงจุดสิ้นสุด TCP จริงของบริการ XMPP
มีสามชื่อที่มีบทบาทต่างกัน:
proxy.example.netคือตัวกลางที่รับการเชื่อมต่อเริ่มต้นxmpp-node.example.netคือจุดสิ้นสุดเซิร์ฟเวอร์ที่พร็อกซีถูกขอให้ไปถึงchat.example.netคือโดเมนบริการ XMPP เช่นโดเมนหลัง@ใน JID ของบัญชี
บริการอาจใช้ชื่อเดียวกันสำหรับสองรายการหลัง แต่ชื่อโฮสต์ของพร็อกซีไม่แทนที่ทั้งสองรายการ รักษาเอกลักษณ์ของบริการ XMPP ที่ต้องการไว้ในการเชื่อมต่อและการตรวจสอบ TLS ของการเชื่อมต่อนั้น
สำหรับพร็อกซี HTTP ให้ใช้ ProxyInfo.forHttpProxy กับพอร์ตพร็อกซีและข้อมูลรับรองที่เหมาะสม เส้นทางนั้นต้องใช้พร็อกซีที่สามารถอุโมงค์การเชื่อมต่อ XMPP และอนุญาตพอร์ตปลายทางได้ พร็อกซีที่จัดการการท่องเว็บ HTTPS ไม่ได้อนุญาตการเชื่อมต่อ TCP ไปยังบริการ XMPP บน 5222 โดยอัตโนมัติ
โหมดความปลอดภัยที่จำเป็นในส่วนนี้ทำให้ TLS เป็นเงื่อนไขของการเชื่อมต่อ XMPP โหมดนี้ไม่ได้ทำการรับรองความถูกต้องของพร็อกซี และข้อมูลรับรองของพร็อกซีไม่ได้เข้าสู่ระบบบัญชี XMPP กำหนดค่าบัญชี XMPP ผ่านขั้นตอนการรับรองความถูกต้องปกติของ Smack หลังจากสร้างเส้นทางและเซสชันที่ปลอดภัยแล้ว
เก็บตัวอย่างไว้ภายในรุ่น API ของตน ตัวอย่าง ConnectionConfiguration แบบเดิมที่อิงตัวสร้างแสดงแนวคิดการกำหนดเส้นทางเดียวกัน แต่ตัวสร้างของ Smack 4.4 คืออินเทอร์เฟซที่ใช้ที่นี่ ไม่จำเป็นต้องสร้างชื่อโฮสต์ของผู้ให้บริการส่งข้อความที่ล้าสมัยขึ้นใหม่เพื่อนำแนวคิดนั้นไปใช้กับบริการ XMPP ปัจจุบัน