Configurações de proxy XMPP no Smack 4.4 com ProxyInfo
Anexe o ProxyInfo ao construtor de conexão XMPP, com configurações separadas de proxy, domínio de serviço e host do servidor.
Configure a conexão que realmente transporta o fluxo XMPP. Definir um proxy em um URLConnection não relacionado não redireciona a conexão TCP do Smack para o serviço de mensagens.
O Smack 4.4 fornece fábricas ProxyInfo para HTTP, SOCKS4 e SOCKS5. Anexe o objeto resultante ao construtor de conexão 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 é um fragmento de configuração para uma instalação existente do Smack 4.4. A aplicação envolvente trata das exceções verificadas do construtor e fornece as credenciais do proxy. O host e a porta explícitos representam o endpoint TCP real do serviço XMPP.
Há três nomes com funções diferentes:
proxy.example.neté o intermediário que recebe a conexão inicial.xmpp-node.example.neté o endpoint do servidor que o proxy deve alcançar.chat.example.neté o domínio do serviço XMPP, como o domínio após@no JID de uma conta.
Um serviço pode usar o mesmo nome para os dois últimos, mas um nome de host de proxy não substitui nenhum deles. Preserve a identidade pretendida do serviço XMPP na conexão e na sua validação TLS.
Para um proxy HTTP, use ProxyInfo.forHttpProxy com a porta de proxy e as credenciais adequadas. Esse caminho exige um proxy capaz de tunelar a conexão XMPP e permitir sua porta de destino. Um proxy que trata navegação web HTTPS não permite automaticamente conexões TCP a um serviço XMPP na 5222.
O modo de segurança obrigatório no fragmento torna o TLS uma condição da conexão XMPP. Ele não realiza autenticação de proxy, e as credenciais do proxy não entram em uma conta XMPP. Configure a conta XMPP pelo fluxo de autenticação normal do Smack depois de estabelecer a rota e a sessão segura.
Mantenha os exemplos dentro de sua geração de API. Os exemplos mais antigos de ConnectionConfiguration baseados em construtor expressam o mesmo conceito de roteamento, mas o construtor do Smack 4.4 é a interface usada aqui. Não é preciso reproduzir nomes de host de um provedor de mensagens obsoleto para aplicar esse conceito a um serviço XMPP atual.