Paramètres de proxy XMPP dans Smack 4.4 avec ProxyInfo
Attachez ProxyInfo au constructeur de connexion XMPP, avec des réglages distincts de proxy, de domaine de service et d'hôte de serveur.
Configurez la connexion qui transporte réellement le flux XMPP. Définir un proxy sur un URLConnection sans rapport ne redirige pas la connexion TCP de Smack vers le service de messagerie.
Smack 4.4 fournit des fabriques ProxyInfo pour HTTP, SOCKS4 et SOCKS5. Attachez l'objet obtenu au constructeur de connexion 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();Il s'agit d'un fragment de configuration pour une installation Smack 4.4 existante. L'application englobante gère les exceptions vérifiées du constructeur et fournit les identifiants du proxy. L'hôte et le port explicites représentent le point de terminaison TCP réel du service XMPP.
Trois noms ont des rôles différents :
proxy.example.netest l'intermédiaire qui reçoit la connexion initiale.xmpp-node.example.netest le point de terminaison du serveur que le proxy doit atteindre.chat.example.netest le domaine du service XMPP, par exemple le domaine après@dans le JID d'un compte.
Un service peut utiliser le même nom pour les deux derniers, mais un nom d'hôte de proxy ne remplace ni l'un ni l'autre. Conservez l'identité prévue du service XMPP dans la connexion et dans sa validation TLS.
Pour un proxy HTTP, utilisez ProxyInfo.forHttpProxy avec le port de proxy et les identifiants appropriés. Cette voie exige un proxy capable de tunneliser la connexion XMPP et d'autoriser son port de destination. Un proxy qui gère la navigation web HTTPS n'autorise pas automatiquement les connexions TCP vers un service XMPP sur 5222.
Le mode de sécurité requis dans le fragment fait de TLS une condition de la connexion XMPP. Il n'effectue pas d'authentification de proxy, et les identifiants du proxy ne servent pas à se connecter à un compte XMPP. Configurez le compte XMPP via le flux d'authentification normal de Smack après avoir établi la route et la session sécurisée.
Gardez les exemples dans leur génération d'API. Les anciens exemples ConnectionConfiguration basés sur un constructeur expriment le même concept de routage, mais le constructeur de Smack 4.4 est l'interface utilisée ici. Il n'est pas nécessaire de reproduire les noms d'hôte d'un fournisseur de messagerie obsolète pour appliquer ce concept à un service XMPP actuel.