Smack API には、このページで説明されている接続用の構成クラスがあります。
サービス名とサーバー名の違いについて混乱しています。
「mybox.mydomain.com」という名前のコンピューターがあり、「myhost」という構成済みのホストで ejabberd したとします ( {hosts, ["myhost"]}.
ejabbed.cfg の行を使用)。
この場合のホスト名、サーバー名、およびサービス名は何ですか?
DNS で SRV レコードを正しく設定するか、クライアントが接続先のホスト (電子メールなど) を指定する場合は、任意のホストで XMPP ドメインをホストできます。
username
@を含むログインに使用している JID を考えてみてくださいdomain
。はdomain
、使用しているサービスの論理名です。などの一部jabber.org
のサービスでは、サービスはサービスと同じ名前のボックスで実行されます。WebEx Connect や GoogleTalk など、他の多くの場合、サービス ドメインは、ソケットを開く場所を特定するための出発点ですが、マシンの名前ではありません。すべてが正しく設定されていれば、SRV レコードを使用して DNS で接続先のマシンの名前を検索できます。たとえば、dig を使用すると、次のようになります。
$ dig +short -t SRV _xmpp-server._tcp.gmail.com
20 0 5269 xmpp-server4.l.google.com.
20 0 5269 xmpp-server2.l.google.com.
20 0 5269 xmpp-server1.l.google.com.
5 0 5269 xmpp-server.l.google.com.
20 0 5269 xmpp-server3.l.google.com.
サービス ドメインが DNS で正しく構成されていない場合、または単にテストしているだけの場合、この接続ホストをドメインとは別に指定できると便利なことがよくあります。したがって、あなたの例では、次を使用します。
ConnectionConfiguration("mybox.mydomain.com",
5222,
"myhost");
このサービスにネットワーク外の人 (クライアントからサーバーまたはサーバーからサーバーへのいずれか) がアクセスできるようにしたい場合は、サービス ドメインの名前を完全に修飾されたものに変更するのが理にかなっています。それらの外部エンティティが使用する SRV レコードを添付します。