إعدادات بروكسي 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 بعد إنشاء المسار والجلسة الآمنة.
أبقِ الأمثلة داخل جيل واجهة البرمجة الخاص بها. تعبر أمثلة ConnectionConfiguration الأقدم القائمة على المنشئ عن مفهوم التوجيه نفسه، لكن منشئ Smack 4.4 هو الواجهة المستخدمة هنا. لا حاجة لإعادة إنتاج أسماء مضيفين لمزود مراسلة قديم لتطبيق ذلك المفهوم على خدمة XMPP حالية.