उस कनेक्शन को कॉन्फ़िगर करें जो वास्तव में XMPP स्ट्रीम ले जाता है। किसी असंबंधित URLConnection पर प्रॉक्सी सेट करना Smack के TCP कनेक्शन को मैसेजिंग सेवा की ओर रीडायरेक्ट नहीं करता।

Smack 4.4 HTTP, SOCKS4 और SOCKS5 के लिए ProxyInfo फ़ैक्टरियाँ देता है। परिणामी ऑब्जेक्ट को 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 सेटअप के लिए कॉन्फ़िगरेशन अंश है। आवरण एप्लिकेशन बिल्डर के चेक्ड अपवादों को संभालता है और प्रॉक्सी क्रेडेंशियल प्रदान करता है। स्पष्ट होस्ट और पोर्ट XMPP सेवा के वास्तविक TCP एंडपॉइंट को दर्शाते हैं।

अलग-अलग भूमिकाओं वाले तीन नाम हैं:

  • proxy.example.net वह मध्यस्थ है जो प्रारंभिक कनेक्शन प्राप्त करता है।
  • xmpp-node.example.net वह सर्वर एंडपॉइंट है जिस तक प्रॉक्सी से पहुँचने को कहा जाता है।
  • chat.example.net XMPP सेवा डोमेन है, जैसे किसी खाते के JID में @ के बाद का डोमेन।

कोई सेवा अंतिम दो के लिए एक ही नाम उपयोग कर सकती है, लेकिन प्रॉक्सी होस्टनेम उनमें से किसी की जगह नहीं लेता। कनेक्शन में और उसके TLS सत्यापन में इच्छित XMPP सेवा पहचान बनाए रखें।

HTTP प्रॉक्सी के लिए उपयुक्त प्रॉक्सी पोर्ट और क्रेडेंशियल के साथ ProxyInfo.forHttpProxy का उपयोग करें। उस मार्ग के लिए ऐसी प्रॉक्सी चाहिए जो XMPP कनेक्शन को टनल कर सके और उसके गंतव्य पोर्ट की अनुमति दे। HTTPS वेब ब्राउज़िंग संभालने वाली प्रॉक्सी 5222 पर XMPP सेवा के लिए TCP कनेक्शन को स्वतः अनुमति नहीं देती।

अंश में आवश्यक सुरक्षा मोड TLS को XMPP कनेक्शन की शर्त बनाता है। यह प्रॉक्सी प्रमाणीकरण नहीं करता, और प्रॉक्सी क्रेडेंशियल किसी XMPP खाते में लॉग इन नहीं करते। मार्ग और सुरक्षित सत्र स्थापित होने के बाद Smack के सामान्य प्रमाणीकरण प्रवाह से XMPP खाता कॉन्फ़िगर करें।

उदाहरणों को उनकी API पीढ़ी के भीतर रखें। पुराने कंस्ट्रक्टर-आधारित ConnectionConfiguration उदाहरण वही रूटिंग अवधारणा व्यक्त करते हैं, परंतु यहाँ उपयोग किया गया इंटरफ़ेस Smack 4.4 का बिल्डर है। उस अवधारणा को वर्तमान XMPP सेवा पर लागू करने के लिए किसी अप्रचलित मैसेजिंग प्रदाता के होस्टनेम दोहराने की आवश्यकता नहीं है।

संबंधित लेख