Как проверить, поддерживает ли сервер протокол xmpp?

StackOverflow https://stackoverflow.com/questions/1093317

  •  11-09-2019
  •  | 
  •  

Вопрос

Я ищу способ проверить, поддерживает ли сервер протокол 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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top