XMPP Smack API RosterListener + изменение базы данных - PullRequest
1 голос
/ 01 мая 2009

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

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

public void entriesAdded(Collection arg0) {}

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

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

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

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

1 Ответ

0 голосов
/ 01 мая 2009

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

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

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

...