Impostazioni proxy XMPP in Smack 4.4 con ProxyInfo
Collegate ProxyInfo al builder di connessione XMPP, con impostazioni separate di proxy, dominio del servizio e host del server.
Configurate la connessione che trasporta davvero il flusso XMPP. Impostare un proxy su un URLConnection non correlato non reindirizza la connessione TCP di Smack al servizio di messaggistica.
Smack 4.4 fornisce factory ProxyInfo per HTTP, SOCKS4 e SOCKS5. Collegate l'oggetto risultante al builder di connessione 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();Questo è un frammento di configurazione per un'installazione Smack 4.4 esistente. L'applicazione circostante gestisce le eccezioni controllate del builder e fornisce le credenziali del proxy. L'host e la porta espliciti rappresentano l'effettivo endpoint TCP del servizio XMPP.
Ci sono tre nomi con ruoli diversi:
proxy.example.netè l'intermediario che riceve la connessione iniziale.xmpp-node.example.netè l'endpoint del server che il proxy deve raggiungere.chat.example.netè il dominio del servizio XMPP, ad esempio il dominio dopo@nel JID di un account.
Un servizio può usare lo stesso nome per gli ultimi due, ma un nome host di proxy non sostituisce nessuno dei due. Preservate l'identità prevista del servizio XMPP nella connessione e nella sua convalida TLS.
Per un proxy HTTP usate ProxyInfo.forHttpProxy con la porta del proxy e le credenziali appropriate. Quel percorso richiede un proxy in grado di incanalare la connessione XMPP e di consentirne la porta di destinazione. Un proxy che gestisce la navigazione web HTTPS non consente automaticamente connessioni TCP a un servizio XMPP sulla 5222.
La modalità di sicurezza richiesta nel frammento rende TLS una condizione della connessione XMPP. Non esegue l'autenticazione del proxy e le credenziali del proxy non accedono a un account XMPP. Configurate l'account XMPP tramite il normale flusso di autenticazione di Smack dopo aver stabilito la rotta e la sessione sicura.
Mantenete gli esempi nella loro generazione di API. I vecchi esempi ConnectionConfiguration basati sul costruttore esprimono lo stesso concetto di instradamento, ma il builder di Smack 4.4 è l'interfaccia usata qui. Non serve riprodurre i nomi host di un provider di messaggistica obsoleto per applicare quel concetto a un servizio XMPP attuale.