Sukonfigūruokite ryšį, kuris iš tikrųjų perduoda XMPP srautą. Tarpinio serverio nustatymas nesusijusiame URLConnection neperadresuoja „Smack“ TCP ryšio į pranešimų paslaugą.

„Smack 4.4“ teikia ProxyInfo gamyklas HTTP, SOCKS4 ir SOCKS5. Prijunkite gautą objektą prie XMPP ryšio kūrėjo:

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

Tai konfigūracijos fragmentas esamam „Smack 4.4“ diegimui. Apgaubianti programa apdoroja kūrėjo tikrinamas išimtis ir pateikia tarpinio serverio kredencialus. Nurodytas host'as ir prievadas žymi tikrąjį XMPP paslaugos TCP galinį tašką.

Yra trys pavadinimai su skirtingais vaidmenimis:

  • proxy.example.net yra tarpininkas, priimantis pradinį ryšį.
  • xmpp-node.example.net yra serverio galinis taškas, kurį tarpinis serveris turi pasiekti.
  • chat.example.net yra XMPP paslaugos domenas, pavyzdžiui, domenas po @ paskyros JID.

Paslauga gali naudoti tą patį pavadinimą dviem paskutiniams, bet tarpinio serverio host'o pavadinimas nepakeičia nė vieno jų. Išsaugokite numatytą XMPP paslaugos tapatybę ryšyje ir jo TLS tikrinime.

HTTP tarpiniam serveriui naudokite ProxyInfo.forHttpProxy su atitinkamu tarpinio serverio prievadu ir kredencialais. Šiam keliui reikia tarpinio serverio, galinčio tuneliuoti XMPP ryšį ir leisti jo paskirties prievadą. Tarpinis serveris, aptarnaujantis HTTPS naršymą, automatiškai neleidžia TCP ryšių į XMPP paslaugą 5222 prievadu.

Fragmente nurodytas privalomas saugos režimas daro TLS XMPP ryšio sąlyga. Jis neatlieka tarpinio serverio autentifikavimo, o tarpinio serverio kredencialai neprisijungia prie XMPP paskyros. Sukonfigūruokite XMPP paskyrą įprastu „Smack“ autentifikavimo srautu, kai maršrutas ir saugi sesija jau nustatyti.

Laikykite pavyzdžius savo API kartoje. Senesni konstruktoriumi pagrįsti ConnectionConfiguration pavyzdžiai išreiškia tą pačią maršrutizavimo idėją, tačiau čia naudojama sąsaja yra „Smack 4.4“ kūrėjas. Nereikia atkartoti pasenusio pranešimų teikėjo host'ų pavadinimų, kad šią idėją pritaikytumėte dabartinei XMPP paslaugai.

Susiję straipsniai