XMPP-proxyinstellingen in Smack 4.4 met ProxyInfo
Koppel ProxyInfo aan de XMPP-verbindingsbouwer, met afzonderlijke instellingen voor proxy, servicedomein en serverhost.
Configureer de verbinding die daadwerkelijk de XMPP-stroom draagt. Een proxy instellen op een niet-gerelateerde URLConnection leidt de TCP-verbinding van Smack niet om naar de berichtenservice.
Smack 4.4 biedt ProxyInfo-fabrieken voor HTTP, SOCKS4 en SOCKS5. Koppel het resulterende object aan de XMPP-verbindingsbouwer:
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();Dit is een configuratiefragment voor een bestaande Smack 4.4-opstelling. De omringende toepassing verwerkt de gecontroleerde uitzonderingen van de bouwer en levert de proxyreferenties. De expliciete host en poort staan voor het werkelijke TCP-eindpunt van de XMPP-service.
Er zijn drie namen met verschillende rollen:
proxy.example.netis de tussenpersoon die de eerste verbinding ontvangt.xmpp-node.example.netis het servereindpunt dat de proxy moet bereiken.chat.example.netis het XMPP-servicedomein, bijvoorbeeld het domein na@in de JID van een account.
Een service kan dezelfde naam gebruiken voor de laatste twee, maar een proxyhostnaam vervangt geen van beide. Behoud de beoogde identiteit van de XMPP-service in de verbinding en de TLS-validatie daarvan.
Gebruik voor een HTTP-proxy ProxyInfo.forHttpProxy met de juiste proxypoort en referenties. Dat pad vereist een proxy die de XMPP-verbinding kan tunnelen en de bestemmingspoort kan toestaan. Een proxy die HTTPS-webbrowsing afhandelt, staat niet automatisch TCP-verbindingen naar een XMPP-service op 5222 toe.
De vereiste beveiligingsmodus in het fragment maakt TLS een voorwaarde voor de XMPP-verbinding. Hij voert geen proxyauthenticatie uit, en de proxyreferenties loggen niet in op een XMPP-account. Configureer het XMPP-account via de normale authenticatiestroom van Smack nadat de route en de beveiligde sessie tot stand zijn gebracht.
Houd voorbeelden binnen hun API-generatie. De oudere op constructors gebaseerde ConnectionConfiguration-voorbeelden drukken hetzelfde routingconcept uit, maar de bouwer van Smack 4.4 is de hier gebruikte interface. Het is niet nodig om hostnamen van een verouderde berichtenprovider te reproduceren om dat concept op een huidige XMPP-service toe te passen.