Configuración de proxy XMPP en Smack 4.4 con ProxyInfo
Adjunte ProxyInfo al constructor de conexión XMPP, con ajustes separados de proxy, dominio de servicio y host del servidor.
Configure la conexión que realmente transporta el flujo XMPP. Establecer un proxy en un URLConnection no relacionado no redirige la conexión TCP de Smack al servicio de mensajería.
Smack 4.4 ofrece fábricas ProxyInfo para HTTP, SOCKS4 y SOCKS5. Adjunte el objeto resultante al constructor 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 es un fragmento de configuración para una instalación existente de Smack 4.4. La aplicación contenedora gestiona las excepciones comprobadas del constructor y proporciona las credenciales del proxy. El host y el puerto explícitos representan el punto final TCP real del servicio XMPP.
Hay tres nombres con funciones distintas:
proxy.example.netes el intermediario que recibe la conexión inicial.xmpp-node.example.netes el punto final del servidor al que se pide al proxy que llegue.chat.example.netes el dominio del servicio XMPP, como el dominio posterior a@en el JID de una cuenta.
Un servicio puede usar el mismo nombre para los dos últimos, pero un nombre de host de proxy no sustituye a ninguno de ellos. Conserve la identidad prevista del servicio XMPP en la conexión y en su validación TLS.
Para un proxy HTTP, use ProxyInfo.forHttpProxy con el puerto de proxy y las credenciales adecuados. Esa ruta necesita un proxy capaz de tunelizar la conexión XMPP y permitir su puerto de destino. Un proxy que gestiona la navegación web HTTPS no permite automáticamente conexiones TCP a un servicio XMPP en el 5222.
El modo de seguridad obligatorio del fragmento convierte TLS en una condición de la conexión XMPP. No realiza autenticación de proxy, y las credenciales del proxy no inician sesión en una cuenta XMPP. Configure la cuenta XMPP mediante el flujo de autenticación normal de Smack tras establecer la ruta y la sesión segura.
Mantenga los ejemplos dentro de su generación de API. Los ejemplos antiguos de ConnectionConfiguration basados en constructor expresan el mismo concepto de enrutamiento, pero el constructor de Smack 4.4 es la interfaz que se usa aquí. No hace falta reproducir nombres de host de un proveedor de mensajería obsoleto para aplicar ese concepto a un servicio XMPP actual.