Налаштування проксі XMPP у Smack 4.4 з ProxyInfo
Приєднайте ProxyInfo до конструктора з'єднання XMPP з окремими налаштуваннями проксі, домену служби та хоста сервера.
Налаштуйте з'єднання, яке справді передає потік XMPP. Встановлення проксі на незв'язаному URLConnection не перенаправляє TCP-з'єднання Smack до служби обміну повідомленнями.
Smack 4.4 надає фабрики ProxyInfo для HTTP, SOCKS4 і SOCKS5. Приєднайте отриманий об'єкт до конструктора з'єднання 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();Це фрагмент конфігурації для наявного налаштування Smack 4.4. Оточуючий застосунок обробляє контрольовані винятки конструктора та надає облікові дані проксі. Явно задані хост і порт позначають фактичну TCP-кінцеву точку служби XMPP.
Є три імені з різними ролями:
proxy.example.net— посередник, який приймає початкове з'єднання.xmpp-node.example.net— кінцева точка сервера, до якої проксі має дістатися.chat.example.net— домен служби XMPP, наприклад домен після@у JID облікового запису.
Служба може використовувати однакове ім'я для останніх двох, але ім'я хоста проксі не замінює жодного з них. Зберігайте передбачувану ідентичність служби XMPP у з'єднанні та його перевірці TLS.
Для проксі HTTP використовуйте ProxyInfo.forHttpProxy з відповідним портом проксі та обліковими даними. Цей шлях потребує проксі, здатного тунелювати з'єднання XMPP і дозволяти його порт призначення. Проксі, що обслуговує веб-перегляд через HTTPS, не дозволяє автоматично TCP-з'єднання до служби XMPP на 5222.
Обов'язковий режим безпеки у фрагменті робить TLS умовою з'єднання XMPP. Він не виконує автентифікацію проксі, і облікові дані проксі не входять до облікового запису XMPP. Налаштуйте обліковий запис XMPP через звичайний потік автентифікації Smack після встановлення маршруту та захищеного сеансу.
Тримайте приклади в межах їхнього покоління API. Старіші приклади ConnectionConfiguration на основі конструктора виражають ту саму концепцію маршрутизації, але конструктор Smack 4.4 є інтерфейсом, використаним тут. Немає потреби відтворювати імена хостів застарілого постачальника повідомлень, щоб застосувати цю концепцію до поточної служби XMPP.