Konfigureer die verbinding wat werklik die XMPP-stroom dra. Om 'n proksie op 'n onverwante URLConnection te stel, herlei nie Smack se TCP-verbinding na die boodskapdiens nie.

Smack 4.4 bied ProxyInfo-fabrieke vir HTTP, SOCKS4 en SOCKS5. Koppel die resulterende objek aan die XMPP-verbindingsbouer:

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();

Dit is 'n konfigurasiefragment vir 'n bestaande Smack 4.4-opstelling. Die omringende toepassing hanteer die bouer se nagegane uitsonderings en verskaf die proksie-aanmeldgegewens. Die eksplisiete host en poort verteenwoordig die XMPP-diensen se werklike TCP-eindpunt.

Daar is drie name met verskillende rolle:

  • proxy.example.net is die tussenganger wat die aanvanklike verbinding ontvang.
  • xmpp-node.example.net is die bediener-eindpunt wat die proksie gevra word om te bereik.
  • chat.example.net is die XMPP-diensdomein, soos die domein ná @ in 'n rekening se JID.

'n Diens kan dieselfde naam vir die laaste twee gebruik, maar 'n proksie-hostnaam vervang nie een van hulle nie. Behoud die beoogde XMPP-diensidentiteit in die verbinding en die TLS-validasie daarvan.

Vir 'n HTTP-proksie, gebruik ProxyInfo.forHttpProxy met die toepaslike proksiepoort en aanmeldgegewens. Daardie pad vereis 'n proksie wat die XMPP-verbinding kan tonnel en sy bestemmingspoort toelaat. 'n Proksie wat HTTPS-webnavigasie hanteer, laat nie outomaties TCP-verbindings na 'n XMPP-diens op 5222 toe nie.

Die vereiste sekuriteitsmodus in die fragment maak TLS 'n voorwaarde vir die XMPP-verbinding. Dit doen nie proksie-verifikasie nie, en die proksie-aanmeldgegewens meld nie by 'n XMPP-rekening aan nie. Konfigureer die XMPP-rekening deur Smack se normale verifikasievloei nadat die roete en veilige sessie gevestig is.

Hou voorbeelde binne hul API-generasie. Die ouer konstruktor-gebaseerde ConnectionConfiguration-voorbeelde druk dieselfde routeringskonsep uit, maar Smack 4.4 se bouer is die koppelvlak wat hier gebruik word. Dit is nie nodig om 'n verouderde boodskapverskaffer se hostname te reproduseer om daardie konsep op 'n huidige XMPP-diens toe te pas nie.

Verwante artikels