Как WhatsApp синхронизирует контакты с ejabberd

Я создаю клиент ejabberd xmpp для создания диаграмм, похожих на WhatsApp. Хотите понять, как WhatsApp синхронизирует контакты с сервером? Как WhatsApp узнает всех зарегистрированных пользователей на сервере и синхронизирует их с вашей адресной книгой?


person Kartik Patel    schedule 25.09.2015    source источник


Ответы (1)


Эта функция не связана с XMPP или ejabberd. Если вы хотите обнаружить контакт вашего пользователя, вам нужно реализовать эту функцию по-своему.

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

Итак, это чисто пользовательское расширение для ejabberd, которое вам нужно будет реализовать.

person Mickaël Rémond    schedule 28.09.2015
comment
Спасибо Ремонд. Это имеет смысл для меня, я также ознакомился с юридической политикой WhatsApp, и она также упоминается там. - person Kartik Patel; 29.09.2015
comment
Я также создаю систему для уведомления пользователей, когда кто-то присоединяется. Я могу придумать несколько вещей для реализации - создайте канал pubsub для каждого из ваших контактов и подпишитесь на него. Когда кто-то подписывает публикацию на нем. Количество каналов будет большим. Или сохраните заинтересованных пользователей в таблице. Отправьте сообщение через ejabberdctl, когда он зарегистрируется. - person user2223032; 12.11.2015
comment
Для этого не нужен канал. Это просто отправка отдельных сообщений для всех людей, у которых есть человек, который присоединился к списку контактов. Это касается только структуры данных. - person Mickaël Rémond; 12.11.2015