Вопрос

Я пишу клиент XMPP на Java, используя Smack API.

Я зарегистрировал прослушиватель списка для каждого пользователя, и Smack API вызывает...

public void entriesAdded(Collection arg0) {}

...каждый раз, когда он замечает пополнение списка.

Кто-нибудь знает, будет ли этот прослушиватель отключен, если база данных изменится, но не с помощью метода createEntry() Smack API?

По сути, я хочу привязать клиент XMPP к веб-сайту.Когда вы добавляете кого-то в список друзей сайта, я хочу, чтобы сайт уведомлял об этом клиента.Вместо того, чтобы настраивать сокеты или использовать PHP для входа на сервер XMPP, я надеялся, что простое изменение базы данных сработает.

Будет ли это работать или есть другой способ справиться с этим без постоянного опроса клиентом базы данных на наличие изменений?

Это было полезно?

Решение

Изменение базы данных не имеет прямого отношения к Smack, так как это клиентская библиотека.У него нет базы данных.Сервер будет использовать базу данных и получать к ней доступ, и в зависимости от сервера могут существовать функции, которые позволят серверу публиковать сообщения при изменении базы данных.Я не знаю, есть ли на самом деле эта функция на каких-либо серверах xmpp.

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

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

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