Konfigurasikan koneksi yang benar-benar membawa aliran XMPP. Menetapkan proksi pada URLConnection yang tidak terkait tidak mengalihkan koneksi TCP Smack ke layanan perpesanan.

Smack 4.4 menyediakan pabrik ProxyInfo untuk HTTP, SOCKS4, dan SOCKS5. Lampirkan objek yang dihasilkan ke builder koneksi 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();

Ini adalah fragmen konfigurasi untuk penyiapan Smack 4.4 yang sudah ada. Aplikasi di sekitarnya menangani pengecualian terperiksa dari builder dan menyediakan kredensial proksi. Host dan port eksplisit mewakili titik akhir TCP sebenarnya dari layanan XMPP.

Ada tiga nama dengan peran berbeda:

  • proxy.example.net adalah perantara yang menerima koneksi awal.
  • xmpp-node.example.net adalah titik akhir server yang diminta dicapai oleh proksi.
  • chat.example.net adalah domain layanan XMPP, seperti domain setelah @ dalam JID akun.

Layanan dapat menggunakan nama yang sama untuk dua yang terakhir, tetapi nama host proksi tidak menggantikan keduanya. Pertahankan identitas layanan XMPP yang dimaksud dalam koneksi dan validasi TLS-nya.

Untuk proksi HTTP, gunakan ProxyInfo.forHttpProxy dengan port proksi dan kredensial yang sesuai. Jalur itu membutuhkan proksi yang mampu menerowongkan koneksi XMPP dan mengizinkan port tujuannya. Proksi yang menangani penjelajahan web HTTPS tidak otomatis mengizinkan koneksi TCP ke layanan XMPP pada 5222.

Mode keamanan yang diwajibkan dalam fragmen menjadikan TLS sebagai syarat koneksi XMPP. Mode itu tidak melakukan autentikasi proksi, dan kredensial proksi tidak masuk ke akun XMPP. Konfigurasikan akun XMPP melalui alur autentikasi normal Smack setelah rute dan sesi aman terbentuk.

Pertahankan contoh dalam generasi API-nya. Contoh ConnectionConfiguration lama berbasis konstruktor mengungkapkan konsep perutean yang sama, tetapi builder Smack 4.4 adalah antarmuka yang digunakan di sini. Tidak perlu mereproduksi nama host penyedia perpesanan yang usang untuk menerapkan konsep tersebut pada layanan XMPP saat ini.

Artikel terkait