Määritä yhteys, joka todella kuljettaa XMPP-virtaa. Välityspalvelimen asettaminen asiaankuulumattomaan URLConnectioniin ei ohjaa Smackin TCP-yhteyttä viestintäpalveluun.

Smack 4.4 tarjoaa ProxyInfo-tehtaat HTTP:lle, SOCKS4:lle ja SOCKS5:lle. Liitä tuloksena oleva olio XMPP-yhteyden rakentajaan:

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

Tämä on määrityskatkelma olemassa olevaan Smack 4.4 -asennukseen. Ympäröivä sovellus käsittelee rakentajan tarkistetut poikkeukset ja toimittaa välityspalvelimen tunnistetiedot. Nimenomainen isäntä ja portti edustavat XMPP-palvelun todellista TCP-päätepistettä.

On kolme nimeä, joilla on eri roolit:

  • proxy.example.net on välittäjä, joka vastaanottaa alkuyhteyden.
  • xmpp-node.example.net on palvelimen päätepiste, johon välityspalvelimen pyydetään pääsevän.
  • chat.example.net on XMPP-palvelun domain, kuten domain @-merkin jälkeen tilin JID:ssä.

Palvelu voi käyttää samaa nimeä kahdelle viimeiselle, mutta välityspalvelimen isäntänimi ei korvaa kumpaakaan. Säilytä aiottu XMPP-palvelun identiteetti yhteydessä ja sen TLS-validoinnissa.

Käytä HTTP-välityspalvelimelle ProxyInfo.forHttpProxy sopivalla välityspalvelimen portilla ja tunnistetiedoilla. Tämä polku vaatii välityspalvelimen, joka pystyy tunnelmaan XMPP-yhteyden ja sallimaan sen kohdeportin. HTTPS-selailua hoitava välityspalvelin ei automaattisesti salli TCP-yhteyksiä XMPP-palveluun portissa 5222.

Katkelman vaadittu suojausmoodi tekee TLS:stä XMPP-yhteyden ehdon. Se ei suorita välityspalvelimen todennusta, eivätkä välityspalvelimen tunnistetiedot kirjaudu XMPP-tilille. Määritä XMPP-tili Smackin tavallisella todennusvirralla sen jälkeen, kun reitti ja suojattu istunto on muodostettu.

Pidä esimerkit oman API-sukupolvensa sisällä. Vanhemmat konstruktoriin perustuvat ConnectionConfiguration-esimerkit ilmaisevat saman reitityskäsitteen, mutta Smack 4.4:n rakentaja on tässä käytetty rajapinta. Vanhentuneen viestintäpalveluntarjoajan isäntänimiä ei tarvitse toistaa, jotta käsite voidaan soveltaa nykyiseen XMPP-palveluun.

Aiheeseen liittyvät artikkelit