กำหนดค่าการเชื่อมต่อที่รับส่งสตรีม 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 ปัจจุบัน

บทความที่เกี่ยวข้อง