Konfigurera anslutningen som faktiskt bär XMPP-strömmen. Att sätta en proxy på en orelaterad URLConnection omdirigerar inte Smacks TCP-anslutning till meddelandetjänsten.

Smack 4.4 tillhandahåller ProxyInfo-fabriker för HTTP, SOCKS4 och SOCKS5. Koppla det resulterande objektet till XMPP-anslutningsbyggaren:

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

Detta är ett konfigurationsfragment för en befintlig Smack 4.4-installation. Det omgivande programmet hanterar byggarens kontrollerade undantag och levererar proxyns inloggningsuppgifter. Den uttryckliga värden och porten står för XMPP-tjänstens faktiska TCP-slutpunkt.

Det finns tre namn med olika roller:

  • proxy.example.net är mellanhanden som tar emot den första anslutningen.
  • xmpp-node.example.net är serverändpunkten som proxyn ombeds nå.
  • chat.example.net är XMPP-tjänstens domän, till exempel domänen efter @ i ett kontos JID.

En tjänst kan använda samma namn för de två sista, men ett proxyvärdnamn ersätter ingen av dem. Bevara den avsedda identiteten för XMPP-tjänsten i anslutningen och dess TLS-validering.

För en HTTP-proxy använder du ProxyInfo.forHttpProxy med rätt proxyport och inloggningsuppgifter. Den vägen kräver en proxy som kan tunnla XMPP-anslutningen och tillåta dess destinationsport. En proxy som hanterar HTTPS-webbläsning tillåter inte automatiskt TCP-anslutningar till en XMPP-tjänst på 5222.

Det obligatoriska säkerhetsläget i fragmentet gör TLS till ett villkor för XMPP-anslutningen. Det utför ingen proxyautentisering, och proxyns inloggningsuppgifter loggar inte in på ett XMPP-konto. Konfigurera XMPP-kontot via Smacks vanliga autentiseringsflöde efter att rutten och den säkra sessionen upprättats.

Håll exempel inom sin API-generation. De äldre konstruktorbaserade ConnectionConfiguration-exemplen uttrycker samma routingkoncept, men byggaren i Smack 4.4 är gränssnittet som används här. Det finns inget behov av att återskapa en föråldrad meddelandeleverantörs värdnamn för att tillämpa konceptet på en aktuell XMPP-tjänst.

Relaterade artiklar