XMPP axınını həqiqətən daşıyan bağlantını konfiqurasiya edin. Əlaqəsiz URLConnection üzərində proksi təyin etmək Smack-ın TCP bağlantısını mesajlaşma xidmətinə yönləndirmir.

Smack 4.4 HTTP, SOCKS4 və SOCKS5 üçün ProxyInfo fabrikləri təqdim edir. Yaranan obyekti XMPP bağlantı qurucusuna əlavə edin:

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();

Bu, mövcud Smack 4.4 quraşdırması üçün konfiqurasiya fraqmentidir. Əhatə edən tətbiq qurucunun yoxlanılan istisnalarını idarə edir və proksi etimadnamələrini təqdim edir. Açıq host və port XMPP xidmətinin faktiki TCP son nöqtəsini bildirir.

Fərqli rolları olan üç ad var:

  • proxy.example.net ilkin bağlantını qəbul edən vasitəçidir.
  • xmpp-node.example.net proksidən çatması tələb olunan server son nöqtəsidir.
  • chat.example.net XMPP xidmət domenidir, məsələn hesabın JID-ində @ işarəsindən sonrakı domen.

Xidmət son iki ad üçün eyni addan istifadə edə bilər, lakin proksi host adı onların heç birini əvəz etmir. Nəzərdə tutulan XMPP xidmət kimliyini bağlantıda və onun TLS yoxlamasında qoruyun.

HTTP proksi üçün uyğun proksi portu və etimadnamələri ilə ProxyInfo.forHttpProxy istifadə edin. Bu yol XMPP bağlantısını tunelləşdirə bilən və təyinat portuna icazə verən proksi tələb edir. HTTPS veb-brauzinqi ilə işləyən proksi 5222 portunda XMPP xidmətinə TCP bağlantılarına avtomatik icazə vermir.

Fraqmentdəki tələb olunan təhlükəsizlik rejimi TLS-i XMPP bağlantısının şərtinə çevirir. O, proksi autentifikasiyasını yerinə yetirmir və proksi etimadnamələri XMPP hesabına daxil olmur. Marşrut və təhlükəsiz sessiya qurulduqdan sonra XMPP hesabını Smack-ın normal autentifikasiya axını ilə konfiqurasiya edin.

Nümunələri öz API nəsli daxilində saxlayın. Köhnə konstruktora əsaslanan ConnectionConfiguration nümunələri eyni marşrutlaşdırma konsepsiyasını ifadə edir, lakin burada istifadə olunan interfeys Smack 4.4-ün qurucusudur. Bu konsepsiyanı cari XMPP xidmətinə tətbiq etmək üçün köhnəlmiş mesajlaşma provayderinin host adlarını təkrar etməyə ehtiyac yoxdur.

Əlaqəli məqalələr