XMPP - объяснение подписки на реестр
Предположим, у меня есть 2 пользователя Алиса и Боб на моем сервере Jabber. Добавить в списки с подпиской как both
Мне нужно сделать следующие шаги:
Алиса отправляет запрос на подписку Бобу.
Когда Боб получает запрос, он утверждает его.
Боб также может быть заинтересован в присутствии Алисы, поэтому он подписывается на нее.
И Алиса должна одобрить запрос Боба.
НО
Теперь подумайте, Боба не было на сервере, то есть он не зарегистрирован, и Алиса пытается добавить его в свой список.
Ниже приведены шаги, которые будут иметь место:
Алиса отправляет запрос на подписку Бобу.
Боб, будучи незарегистрированным, не получил запрос.
Алиса-> Боб подписка установлена как
None
,Процесс заканчивается здесь.
Теперь Боб зарегистрировался. Как Алиса узнает, что Боб зарегистрировался, и ей нужно отправить subscription
запросить снова ИЛИ Как Боб будет отправлять уведомления каждому пользователю, который добавил его в свой список? Какой модуль XEP/Ejabberd обрабатывает это?
Мы отладили Whatsapp и узнали, что в этом случае Боб отправляет уведомление всем тем пользователям, которые добавили его в свои списки.
1 ответ
Ну, как я понимаю, это больше похоже на то, какой тип конфигурации вы используете, так как при настройке среды учитывается несколько сценариев. Вот несколько способов, которыми я знаю, что такие вещи могут получиться.
Рассматриваемый сервер играет ключевую роль в подключении
Xmpp
клиенты в такой ситуации, как DNS-серверы в Интернете, играют заметную роль в соединении клиентов, поэтому, если Боб не был зарегистрирован в то время, когда Алиса отправила запрос, он мог бы иметь службу кэширования, которая записывает все службы соединения, и когда он становится зарегистрированным, и у него есть служба Xmpp, которая автоматически обнаруживает одноранговые узлы в сети (как я уже говорил, это будет зависеть от пользователя), но в процессе обнаружения должен быть какой-то тип пользовательской настройки; затем его служба будет извлекать все прошлые запросы из кэша и, в зависимости от сроков, сможет получить запрос Алисы, после чего он сможет ответить. Это больше с философской точки зрения. Но если вы разработчик, вы можете написать плагины для всего описанного выше сценария. Если вам нужны дополнительные технические параметры, мы можем поговорить об этом, например, о типе метода обнаружения, который вы хотите написать на сервере Bobs, типе механизма кэширования, который вы, возможно, захотите включить в сеть Bobs, и о том, как подключить его к своему серверу Jabber и т. Д. Это были только мои два цента. Просто рассмотрите ситуацию, похожую на наличие сборщика пакетов и получение автономных сообщений при входе в систему, но в этом случае это будет охватывать сервер Jabber, а сборщик пакетов будет ядром службы кэширования, который вы подключаете к своему серверу.Если бы это была локальная сеть, возможно, было бы немного сложнее быть динамичным, чем извлекать записи хоста и все проблемы с подключением, но вероятное решение, которое я могу найти, - это иметь преимущество перед всеми доступными контактами, или лучше по-прежнему работать с конкретная подсеть.