XMPP-proxyinställningar i Smack 4.4 med ProxyInfo
Koppla ProxyInfo till XMPP-anslutningsbyggaren, med separata inställningar för proxy, tjänstedomän och servervärd.
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.