Configure a conexión que realmente transporta o fluxo XMPP. Establecer un proxy nun URLConnection non relacionado non redirixe a conexión TCP de Smack ao servizo de mensaxería.

Smack 4.4 ofrece fábricas ProxyInfo para HTTP, SOCKS4 e SOCKS5. Engada o obxecto resultante ao construtor de conexión XMPP:

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

Este é un fragmento de configuración para unha instalación existente de Smack 4.4. A aplicación circundante xestiona as excepcións comprobadas do construtor e fornece as credenciais do proxy. O host e o porto explícitos representan o punto final TCP real do servizo XMPP.

Hai tres nomes con funcións diferentes:

  • proxy.example.net é o intermediario que recibe a conexión inicial.
  • xmpp-node.example.net é o punto final do servidor ao que se lle pide ao proxy que chegue.
  • chat.example.net é o dominio do servizo XMPP, como o dominio posterior a @ no JID dunha conta.

Un servizo pode usar o mesmo nome para os dous últimos, pero un nome de host de proxy non substitúe ningún deles. Conserve a identidade prevista do servizo XMPP na conexión e na súa validación TLS.

Para un proxy HTTP, use ProxyInfo.forHttpProxy co porto de proxy e as credenciais axeitados. Ese camiño require un proxy capaz de tunelar a conexión XMPP e permitir o seu porto de destino. Un proxy que xestiona a navegación web HTTPS non permite automaticamente conexións TCP a un servizo XMPP no 5222.

O modo de seguridade obrigatorio do fragmento converte TLS nunha condición da conexión XMPP. Non realiza autenticación de proxy, e as credenciais do proxy non inician sesión nunha conta XMPP. Configure a conta XMPP mediante o fluxo de autenticación normal de Smack despois de establecer a ruta e a sesión segura.

Manteña os exemplos dentro da súa xeración de API. Os exemplos antigos de ConnectionConfiguration baseados en construtor expresan o mesmo concepto de enrutamento, pero o construtor de Smack 4.4 é a interface usada aquí. Non fai falta reproducir nomes de host dun provedor de mensaxería obsoleto para aplicar ese concepto a un servizo XMPP actual.

Artigos relacionados