Cài đặt proxy XMPP trong Smack 4.4 với ProxyInfo
Gắn ProxyInfo vào trình tạo kết nối XMPP, với các thiết lập riêng cho proxy, miền dịch vụ và máy chủ lưu trữ.
Hãy cấu hình kết nối thực sự mang luồng XMPP. Đặt proxy trên một URLConnection không liên quan không chuyển hướng kết nối TCP của Smack đến dịch vụ nhắn tin.
Smack 4.4 cung cấp các factory ProxyInfo cho HTTP, SOCKS4 và SOCKS5. Gắn đối tượng thu được vào trình tạo kết nối 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();Đây là một đoạn cấu hình cho thiết lập Smack 4.4 hiện có. Ứng dụng bao quanh xử lý các ngoại lệ được kiểm tra của trình tạo và cung cấp thông tin đăng nhập proxy. Máy chủ và cổng được chỉ định rõ ràng đại diện cho điểm cuối TCP thực tế của dịch vụ XMPP.
Có ba tên với các vai trò khác nhau:
proxy.example.netlà trung gian nhận kết nối ban đầu.xmpp-node.example.netlà điểm cuối máy chủ mà proxy được yêu cầu tiếp cận.chat.example.netlà miền dịch vụ XMPP, chẳng hạn miền sau@trong JID của một tài khoản.
Một dịch vụ có thể dùng cùng một tên cho hai mục cuối, nhưng tên máy chủ proxy không thay thế cả hai. Giữ nguyên danh tính dịch vụ XMPP dự định trong kết nối và việc xác thực TLS của nó.
Với proxy HTTP, dùng ProxyInfo.forHttpProxy với cổng proxy và thông tin đăng nhập phù hợp. Đường đi đó cần một proxy có khả năng tạo đường hầm cho kết nối XMPP và cho phép cổng đích của nó. Một proxy xử lý duyệt web HTTPS không tự động cho phép các kết nối TCP đến dịch vụ XMPP trên 5222.
Chế độ bảo mật bắt buộc trong đoạn cấu hình khiến TLS trở thành điều kiện của kết nối XMPP. Nó không thực hiện xác thực proxy, và thông tin đăng nhập proxy không đăng nhập vào tài khoản XMPP. Cấu hình tài khoản XMPP qua luồng xác thực thông thường của Smack sau khi thiết lập tuyến và phiên an toàn.
Giữ các ví dụ trong thế hệ API của chúng. Các ví dụ ConnectionConfiguration cũ dựa trên constructor cũng diễn đạt cùng khái niệm định tuyến, nhưng trình tạo của Smack 4.4 là giao diện được dùng ở đây. Không cần tái tạo tên máy chủ của một nhà cung cấp nhắn tin lỗi thời để áp dụng khái niệm đó cho dịch vụ XMPP hiện tại.