Konfigurējiet savienojumu, kas patiešām pārnēsā XMPP straumi. Starpniekservera iestatīšana nesaistītā URLConnection nepārvirza Smack TCP savienojumu uz ziņojumapmaiņas pakalpojumu.

Smack 4.4 nodrošina ProxyInfo rūpnīcas HTTP, SOCKS4 un SOCKS5. Pievienojiet iegūto objektu XMPP savienojuma veidotājam:

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

Šis ir konfigurācijas fragments esošam Smack 4.4 iestatījumam. Apkārtējā lietojumprogramma apstrādā veidotāja pārbaudītos izņēmumus un nodrošina starpniekservera akreditācijas datus. Norādītais resursdators un ports apzīmē faktisko XMPP pakalpojuma TCP galapunktu.

Ir trīs nosaukumi ar atšķirīgām lomām:

  • proxy.example.net ir starpnieks, kas saņem sākotnējo savienojumu.
  • xmpp-node.example.net ir servera galapunkts, kuru starpniekserverim jāsasniedz.
  • chat.example.net ir XMPP pakalpojuma domēns, piemēram, domēns pēc @ konta JID.

Pakalpojums var izmantot to pašu nosaukumu pēdējiem diviem, bet starpniekservera resursdatora nosaukums neaizstāj nevienu no tiem. Saglabājiet paredzēto XMPP pakalpojuma identitāti savienojumā un tā TLS validācijā.

HTTP starpniekserveram izmantojiet ProxyInfo.forHttpProxy ar atbilstošu starpniekservera portu un akreditācijas datiem. Šim ceļam nepieciešams starpniekservers, kas spēj tunelēt XMPP savienojumu un atļaut tā galamērķa portu. Starpniekservers, kas apkalpo HTTPS tīmekļa pārlūkošanu, automātiski neatļauj TCP savienojumus uz XMPP pakalpojumu portā 5222.

Fragmentā noteiktais obligātais drošības režīms padara TLS par XMPP savienojuma nosacījumu. Tas neveic starpniekservera autentifikāciju, un starpniekservera akreditācijas dati nepiesakās XMPP kontā. Konfigurējiet XMPP kontu ar parasto Smack autentifikācijas plūsmu pēc maršruta un drošās sesijas izveides.

Turiet piemērus savā API paaudzē. Vecākie uz konstruktoru balstītie ConnectionConfiguration piemēri izsaka to pašu maršrutēšanas koncepciju, bet šeit izmantotā saskarne ir Smack 4.4 veidotājs. Nav jāatkārto novecojuša ziņojumapmaiņas pakalpojumu sniedzēja resursdatoru nosaukumi, lai šo koncepciju piemērotu pašreizējam XMPP pakalpojumam.

Saistītie raksti