Domanda

Sto scrivendo un client XMPP in Java usando l'API di Smack.

Ho registrato un listener di elenchi per ciascun utente e l'API di Smack chiama ...

public void entriesAdded(Collection arg0) {}

... ogni volta che nota un'aggiunta roster.

Qualcuno sa se questo listener verrà disattivato se il database cambia ma non tramite il metodo createEntry () dell'API di Smack?

Fondamentalmente, voglio legare il client XMPP a un sito Web. Quando aggiungi qualcuno all'elenco di amici del sito Web, voglio che il sito informi il cliente. Invece di configurare socket o utilizzare PHP per accedere al server XMPP, speravo che la semplice modifica del database avrebbe funzionato.

Funzionerà o esiste un altro modo di gestirlo senza che il client esegua costantemente il polling del database per le modifiche?

È stato utile?

Soluzione

La modifica del database non ha nulla a che fare con Smack direttamente, poiché si tratta di una libreria client. Non ha un database. Il database verrà utilizzato e accessibile dal server e, a seconda del server, potrebbero essere presenti funzionalità che consentiranno al server di pubblicare messaggi quando il db è stato modificato. Non so se alcuni server xmpp abbiano effettivamente questa funzione.

È necessario verificare le funzionalità del server in uso e possibilmente utilizzare le estensioni nel server stesso per aggiungere le voci del roster. La modifica diretta del database non sembra davvero la strada da percorrere, poiché molto probabilmente il tuo server XMPP e il tuo database non saranno sincronizzati.

Per quanto riguarda il client che esegue il polling del database, non sembra una buona idea che il client sia in grado di accedere direttamente al database se viene utilizzato da un server XMPP e potenzialmente dal tuo server web.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top