Как проверить, поддерживает ли сервер протокол xmpp?
Вопрос
Я ищу способ проверить, поддерживает ли сервер протокол xmpp, т.е.xmpp-сервер работает в этом домене.
Может быть, специальная проверка DNS или что-то в этом роде?
Решение
Большинство серверов XMPP должны поддерживать хотя бы одну из этих записей DNS SRV:
- _xmpp-server._tcp.
example.com
- _xmpp-client._tcp.
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">
Другие советы
Следуя объяснениям Джо, я лично проверил бы записи SRV и вернулся к быстрой (с коротким таймаутом) проверке соединения на порту 5269.Затем кэшируйте результат.
Вы можете попробовать IMtrends: http://www.process-one.net/en/imtrends/