Կարգավորեք այն միացումը, որն իրականում կրում է XMPP հոսքը։ Անկապ URLConnection-ի վրա պրոքսի սահմանելը չի վերահղում Smack-ի TCP միացումը դեպի հաղորդագրությունների ծառայություն։

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 կարգավորման համար։ Շրջապատող հավելվածը մշակում է կառուցիչի ստուգված բացառությունները և տրամադրում պրոքսի հավատարմագրերը։ Բացահայտ հոսթը և պորտը ներկայացնում են XMPP ծառայության փաստացի TCP վերջնակետը։

Կան երեք անուններ՝ տարբեր դերերով․

  • proxy.example.net այն միջնորդն է, որը ստանում է սկզբնական միացումը։
  • xmpp-node.example.net այն սերվերի վերջնակետն է, որին պրոքսին պետք է հասնի։
  • chat.example.net XMPP ծառայության տիրույթն է, օրինակ՝ հաշվի JID-ում @-ից հետո եկող տիրույթը։

Ծառայությունը կարող է նույն անունը օգտագործել վերջին երկուսի համար, բայց պրոքսի հոսթի անունը չի փոխարինում նրանցից ոչ մեկին։ Պահպանեք նախատեսված XMPP ծառայության ինքնությունը միացման և դրա TLS ստուգման մեջ։

HTTP պրոքսի համար օգտագործեք ProxyInfo.forHttpProxy-ը համապատասխան պրոքսի պորտով և հավատարմագրերով։ Այդ ուղին պահանջում է պրոքսի, որը կարող է թունելավորել XMPP միացումը և թույլատրել դրա նպատակակետ պորտը։ HTTPS վեբ զննարկումը սպասարկող պրոքսը ինքնաբերաբար չի թույլատրում TCP միացումներ 5222 պորտի XMPP ծառայությանը։

Հատվածում պահանջվող անվտանգության ռեժիմը TLS-ը դարձնում է XMPP միացման պայման։ Այն չի կատարում պրոքսի նույնականացում, և պրոքսի հավատարմագրերը չեն մուտք գործում XMPP հաշիվ։ Ուղին և անվտանգ սեսիան հաստատելուց հետո կարգավորեք XMPP հաշիվը Smack-ի սովորական նույնականացման հոսքով։

Օրինակները պահեք իրենց API սերնդի սահմաններում։ Հին կոնստրուկտորահեն ConnectionConfiguration օրինակները արտահայտում են նույն երթուղավորման գաղափարը, սակայն այստեղ օգտագործված ինտերֆեյսը Smack 4.4-ի կառուցիչն է։ Պետք չէ վերարտադրել հնացած հաղորդագրությունների մատակարարի հոսթների անունները՝ այդ գաղափարը ընթացիկ XMPP ծառայության վրա կիրառելու համար։

Առնչվող հոդվածներ