サーバーがxmppプロトコルをサポートしているかどうか、つまりxmpp-serverがこのドメインで実行されているかどうかを確認する方法を探しています。
多分特別なDNSチェックかそのようなもの?
ほとんどのXMPPサーバーは、これらのDNSSRVレコードの少なくとも1つをサポートする必要があります。
example.com
example.com
一部のサーバーではこれらのレコードが公開されていない場合がありますが、ほとんどのサーバーは外部との通信を望まないでしょう。例として、次のように、コマンドラインで「dig」を使用してドメインをチェックできます。
% dig +short -t SRV _xmpp-server._tcp.gmail.com.
20 0 5269 xmpp-server2.l.google.com.
20 0 5269 xmpp-server3.l.google.com.
20 0 5269 xmpp-server4.l.google.com.
5 0 5269 xmpp-server.l.google.com.
20 0 5269 xmpp-server1.l.google.com.
「+short」は多くのDNS詳細を削除し、「-t SRV」はSRVレコードが必要であることを示し、最後のドットはローカルドメイン名の設定を無視することを示します。
(@ user188719への応答として追加)SRVレコードが見つからない場合は、元のドメイン名を使用して、クライアント接続にポート5222、サーバー接続に5269を想定してみてください。
接続するホスト名とポート番号を取得しtelnet hostname port
たら、そこでリッスンしているプロセスがあるかどうかを確認するために使用できます。ただし、そのホスト/ポートにあるXMPPサーバーであるかどうかを実際に検出するには、XMPPストリームの開始を送信します。 nc
またはnetcat
、このための便利なメカニズムを提供します。サーバー間チェックの例:
% echo "<stream:stream to='gmail.com' version='1.0' xmlns='jabber:server' xmlns:stream='http://etherx.jabber.org/streams' xmlns:db='jabber:server:dialback'>" | nc xmpp-server.l.google.com 5269
<stream:stream id="0A44AFB86521393A" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:server" xmlns:db="jabber:server:dialback">
Joeの説明に従って、私は個人的にSRVレコードをチェックし、ポート5269のクイック(短いタイムアウト)接続チェックにフォールバックします。次に、結果をキャッシュします。
IMtrendsを試すことができます:http://www.process-one.net/en/imtrends/