XMPP സ്ട്രീം യഥാർത്ഥത്തിൽ വഹിക്കുന്ന കണക്ഷൻ ക്രമീകരിക്കുക. ബന്ധമില്ലാത്ത URLConnection-ൽ പ്രോക്സി സജ്ജമാക്കുന്നത് Smack-ന്റെ TCP കണക്ഷനെ സന്ദേശ സേവനത്തിലേക്ക് റീഡയറക്ട് ചെയ്യുന്നില്ല.

Smack 4.4 HTTP, SOCKS4, SOCKS5 എന്നിവയ്ക്കായി ProxyInfo ഫാക്ടറികൾ നൽകുന്നു. ലഭിച്ച ഒബ്ജക്ട് 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 സെറ്റപ്പിനുള്ള കോൺഫിഗറേഷൻ ശകലമാണ്. ചുറ്റുമുള്ള ആപ്ലിക്കേഷൻ ബിൽഡറിന്റെ ചെക്ക്ഡ് എക്സെപ്ഷനുകൾ കൈകാര്യം ചെയ്യുകയും പ്രോക്സി ക്രെഡൻഷ്യലുകൾ നൽകുകയും ചെയ്യുന്നു. വ്യക്തമാക്കിയ ഹോസ്റ്റും പോർട്ടും XMPP സേവനത്തിന്റെ യഥാർത്ഥ TCP എൻഡ്പോയിന്റിനെ പ്രതിനിധീകരിക്കുന്നു.

വ്യത്യസ്ത റോളുകളുള്ള മൂന്ന് പേരുകളുണ്ട്:

  • proxy.example.net പ്രാരംഭ കണക്ഷൻ സ്വീകരിക്കുന്ന ഇടനിലക്കാരനാണ്.
  • xmpp-node.example.net പ്രോക്സി എത്തിച്ചേരാൻ ആവശ്യപ്പെടുന്ന സർവർ എൻഡ്പോയിന്റാണ്.
  • chat.example.net XMPP സേവന ഡൊമെയ്നാണ്, ഉദാഹരണത്തിന് അക്കൗണ്ടിന്റെ JID-ൽ @-ന് ശേഷമുള്ള ഡൊമെയ്ൻ.

ഒരു സേവനത്തിന് അവസാന രണ്ടിനും ഒരേ പേര് ഉപയോഗിക്കാം, എന്നാൽ പ്രോക്സി ഹോസ്റ്റ്നെയിം അവയിലൊന്നിനെയും മാറ്റിസ്ഥാപിക്കുന്നില്ല. കണക്ഷനിലും അതിന്റെ TLS സാധൂകരണത്തിലും ഉദ്ദേശിച്ച XMPP സേവന ഐഡന്റിറ്റി നിലനിർത്തുക.

HTTP പ്രോക്സിക്ക് ഉചിതമായ പ്രോക്സി പോർട്ടും ക്രെഡൻഷ്യലുകളും ഉപയോഗിച്ച് ProxyInfo.forHttpProxy ഉപയോഗിക്കുക. ആ വഴിക്ക് XMPP കണക്ഷൻ ടണൽ ചെയ്യാനും അതിന്റെ ലക്ഷ്യ പോർട്ട് അനുവദിക്കാനും കഴിയുന്ന പ്രോക്സി വേണം. HTTPS വെബ് ബ്രൗസിംഗ് കൈകാര്യം ചെയ്യുന്ന പ്രോക്സി 5222-ൽ XMPP സേവനത്തിലേക്കുള്ള TCP കണക്ഷനുകൾ സ്വയമേവ അനുവദിക്കുന്നില്ല.

ശകലത്തിലെ നിർബന്ധിത സുരക്ഷാ മോഡ് TLS-നെ XMPP കണക്ഷന്റെ വ്യവസ്ഥയാക്കുന്നു. അത് പ്രോക്സി പ്രാമാണീകരണം നടത്തുന്നില്ല, പ്രോക്സി ക്രെഡൻഷ്യലുകൾ XMPP അക്കൗണ്ടിൽ ലോഗിൻ ചെയ്യുന്നുമില്ല. റൂട്ടും സുരക്ഷിത സെഷനും സ്ഥാപിച്ചതിന് ശേഷം Smack-ന്റെ സാധാരണ പ്രാമാണീകരണ പ്രവാഹത്തിലൂടെ XMPP അക്കൗണ്ട് ക്രമീകരിക്കുക.

ഉദാഹരണങ്ങൾ അവയുടെ API തലമുറയ്ക്കുള്ളിൽ സൂക്ഷിക്കുക. പഴയ കൺസ്ട്രക്ടർ അടിസ്ഥാനമാക്കിയ ConnectionConfiguration ഉദാഹരണങ്ങൾ അതേ റൂട്ടിംഗ് ആശയം പ്രകടിപ്പിക്കുന്നു, എന്നാൽ ഇവിടെ ഉപയോഗിക്കുന്ന ഇന്റർഫേസ് Smack 4.4-ന്റെ ബിൽഡറാണ്. ആ ആശയം നിലവിലെ XMPP സേവനത്തിൽ പ്രയോഗിക്കാൻ കാലഹരണപ്പെട്ട ഒരു സന്ദേശ ദാതാവിന്റെ ഹോസ്റ്റ്നെയിമുകൾ പുനർനിർമ്മിക്കേണ്ടതില്ല.

അനുബന്ധ ലേഖനങ്ങൾ