Question

J'écris un client XMPP en Java à l'aide de l'API Smack.

J'ai enregistré un écouteur de liste pour chaque utilisateur, et l'API de Smack appelle ...

public void entriesAdded(Collection arg0) {}

... chaque fois qu'il remarque un ajout à la liste.

Est-ce que quelqu'un sait si cet écouteur sera activé si la base de données change, mais pas via la méthode createEntry () de l'API Smack?

En gros, je souhaite lier le client XMPP à un site Web. Lorsque vous ajoutez une personne à la liste d'amis du site Web, je souhaite que le site en informe le client. Plutôt que de configurer des sockets ou d’utiliser PHP pour se connecter au serveur XMPP, j’espérais que le simple fait de modifier la base de données fonctionnerait.

Cela fonctionnera-t-il ou existe-t-il un autre moyen de le gérer sans que le client interroge en permanence la base de données pour connaître les modifications?

Était-ce utile?

La solution

La modification de la base de données n’a rien à voir avec Smack directement, car c’est une bibliothèque cliente. Il n'a pas de base de données. Le serveur utilisera la base de données et y aura accès. Selon le serveur, certaines fonctionnalités permettront au serveur de publier des messages lorsque la base de données a été modifiée. Je ne sais pas si des serveurs xmpp ont réellement cette fonctionnalité.

Vous devez vérifier les capacités du serveur que vous utilisez et éventuellement utiliser des extensions sur le serveur lui-même pour ajouter les entrées de la liste. Changer la base de données directement ne semble pas vraiment être la meilleure solution, car votre serveur XMPP et votre base de données seront probablement désynchronisés.

En ce qui concerne le client interrogeant la base de données, il ne semble pas judicieux que le client puisse accéder directement à la base de données si elle est utilisée par un serveur XMPP et potentiellement par votre serveur Web.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top