XMPP - объяснение подписки на реестр

Предположим, у меня есть 2 пользователя Алиса и Боб на моем сервере Jabber. Добавить в списки с подпиской как bothМне нужно сделать следующие шаги:

  1. Алиса отправляет запрос на подписку Бобу.

  2. Когда Боб получает запрос, он утверждает его.

  3. Боб также может быть заинтересован в присутствии Алисы, поэтому он подписывается на нее.

  4. И Алиса должна одобрить запрос Боба.

НО

Теперь подумайте, Боба не было на сервере, то есть он не зарегистрирован, и Алиса пытается добавить его в свой список.

Ниже приведены шаги, которые будут иметь место:

  1. Алиса отправляет запрос на подписку Бобу.

  2. Боб, будучи незарегистрированным, не получил запрос.

  3. Алиса-> Боб подписка установлена ​​как None,

  4. Процесс заканчивается здесь.

Теперь Боб зарегистрировался. Как Алиса узнает, что Боб зарегистрировался, и ей нужно отправить subscription запросить снова ИЛИ Как Боб будет отправлять уведомления каждому пользователю, который добавил его в свой список? Какой модуль XEP/Ejabberd обрабатывает это?

Мы отладили Whatsapp и узнали, что в этом случае Боб отправляет уведомление всем тем пользователям, которые добавили его в свои списки.

1 ответ

Ну, как я понимаю, это больше похоже на то, какой тип конфигурации вы используете, так как при настройке среды учитывается несколько сценариев. Вот несколько способов, которыми я знаю, что такие вещи могут получиться.

  1. Рассматриваемый сервер играет ключевую роль в подключении Xmpp клиенты в такой ситуации, как DNS-серверы в Интернете, играют заметную роль в соединении клиентов, поэтому, если Боб не был зарегистрирован в то время, когда Алиса отправила запрос, он мог бы иметь службу кэширования, которая записывает все службы соединения, и когда он становится зарегистрированным, и у него есть служба Xmpp, которая автоматически обнаруживает одноранговые узлы в сети (как я уже говорил, это будет зависеть от пользователя), но в процессе обнаружения должен быть какой-то тип пользовательской настройки; затем его служба будет извлекать все прошлые запросы из кэша и, в зависимости от сроков, сможет получить запрос Алисы, после чего он сможет ответить. Это больше с философской точки зрения. Но если вы разработчик, вы можете написать плагины для всего описанного выше сценария. Если вам нужны дополнительные технические параметры, мы можем поговорить об этом, например, о типе метода обнаружения, который вы хотите написать на сервере Bobs, типе механизма кэширования, который вы, возможно, захотите включить в сеть Bobs, и о том, как подключить его к своему серверу Jabber и т. Д. Это были только мои два цента. Просто рассмотрите ситуацию, похожую на наличие сборщика пакетов и получение автономных сообщений при входе в систему, но в этом случае это будет охватывать сервер Jabber, а сборщик пакетов будет ядром службы кэширования, который вы подключаете к своему серверу.

  2. Если бы это была локальная сеть, возможно, было бы немного сложнее быть динамичным, чем извлекать записи хоста и все проблемы с подключением, но вероятное решение, которое я могу найти, - это иметь преимущество перед всеми доступными контактами, или лучше по-прежнему работать с конкретная подсеть.

Другие вопросы по тегам