Configuración de proxy XMPP en Smack 4.4 con ProxyInfo
Engada ProxyInfo ao construtor de conexión XMPP, con axustes separados de proxy, dominio de servizo e host do servidor.
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.