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 услуга.