Configurați conexiunea care transportă efectiv fluxul XMPP. Setarea unui proxy pe un URLConnection necorelat nu redirecționează conexiunea TCP a Smack către serviciul de mesagerie.

Smack 4.4 oferă fabrici ProxyInfo pentru HTTP, SOCKS4 și SOCKS5. Atașați obiectul rezultat constructorului de conexiune 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();

Acesta este un fragment de configurare pentru o instalare Smack 4.4 existentă. Aplicația înconjurătoare gestionează excepțiile verificate ale constructorului și furnizează acreditările proxy. Gazda și portul explicite reprezintă punctul final TCP real al serviciului XMPP.

Există trei nume cu roluri diferite:

  • proxy.example.net este intermediarul care primește conexiunea inițială.
  • xmpp-node.example.net este punctul final al serverului la care proxy-ul trebuie să ajungă.
  • chat.example.net este domeniul serviciului XMPP, cum ar fi domeniul de după @ din JID-ul unui cont.

Un serviciu poate folosi același nume pentru ultimele două, dar un nume de gazdă proxy nu le înlocuiește pe niciuna. Păstrați identitatea dorită a serviciului XMPP în conexiune și în validarea sa TLS.

Pentru un proxy HTTP, utilizați ProxyInfo.forHttpProxy cu portul de proxy și acreditările potrivite. Acea cale necesită un proxy capabil să tuneleze conexiunea XMPP și să permită portul de destinație al acesteia. Un proxy care gestionează navigarea web HTTPS nu permite automat conexiuni TCP către un serviciu XMPP pe 5222.

Modul de securitate obligatoriu din fragment face din TLS o condiție a conexiunii XMPP. Acesta nu efectuează autentificarea proxy, iar acreditările proxy nu se conectează la un cont XMPP. Configurați contul XMPP prin fluxul normal de autentificare al Smack după stabilirea rutei și a sesiunii securizate.

Păstrați exemplele în generația lor de API. Exemplele mai vechi ConnectionConfiguration bazate pe constructor exprimă același concept de rutare, dar constructorul Smack 4.4 este interfața folosită aici. Nu este nevoie să reproduceți numele de gazdă ale unui furnizor de mesagerie învechit pentru a aplica acel concept unui serviciu XMPP actual.

Articole similare