Pengaturan proksi XMPP di Smack 4.4 dengan ProxyInfo
Lampirkan ProxyInfo ke builder koneksi XMPP, dengan pengaturan proksi, domain layanan, dan host server yang terpisah.
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.netadalah perantara yang menerima koneksi awal.xmpp-node.example.netadalah titik akhir server yang diminta dicapai oleh proksi.chat.example.netadalah 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.