Domanda

Ho costruito un componente esterno OpenFire basato sulla libreria Whack estendendo la classe AbstractComponent.Voglio i clienti di iscriversi al mio componente e ricevere notifiche di presenza quando il componente va online e offline.Quindi la mia domanda è come possiamo affrontare le iscrizioni di presenza e presenza per componenti esterni basati su AbstractComponent?

Attualmente posso rispondere alla richiesta di presenza utilizzando il metodo del manubrio () ma come dovrei aggiungere client al componente roster (i componenti esterni consentono il roster in primo luogo)?

@Override
protected void handlePresence(Presence presence){
    if (presence.getType() ==  Presence.Type.subscribe){
        System.out.println("The component has received Subscribtion request.");
        Presence original =  presence;
        Presence response = new Presence();
        //Swap the sender/recipient fields
        response.setTo(original.getFrom());
        response.setFrom(original.getTo());
        //Convert the text to upper case
        response.setType(Presence.Type.subscribed);
        send(response);

    }
}
.

È stato utile?

Soluzione

I componenti non hanno un roster fornito dal server. Puoi memorizzare il proprio roster in un database se è necessario. Alcune applicazioni possono scappare affatto senza roster (quando semplicemente vogliono apparire online a tutti).

Per apparire online a tutti (approccio più semplice, nessuna memoria Roster richiesta):

    .
  • Quando si riceve <presence type="subscribe"/> Reply con <presence type="subscribed"/>
  • Quando si riceve la risposta <presence type="probe"/> con <presence/> (o qualunque sia la soluzione di visualizzazione come)

    Per memorizzare un roster richiede un po 'più di lavoro, ma ti consente di tenere traccia di chi è autorizzato a vedere la tua presenza e la cui presenza sei autorizzato a vedere. In alcuni casi potresti preferire utilizzare una connessione client normale qui, se non vuoi gestire il proprio roster. Jack Moffitt ha scritto un post sul blog sull'idea qui: http: / /metajack.im/2008/08/04/thoughts-on-Scalable-xmpl-bots/

    Si noti che in questo post ho ometto "A" e 'da' attributi su Stanzas. Spetta al componente mettere un 'a' e 'da' su Stanzas in uscita. Tutti gli Stanza in entrata avranno un 'a' e 'da'.

    Visualizzazione della presenza di un componente agli utenti

    Gli standard in arrivo di base che devi gestire sono:

      .
    • <presence type="subscribe">

        .
      • Il mittente vuole iscriverti ai tuoi aggiornamenti di presenza. Puoi approvare o rifiutarlo. Se approvi, è necessario memorizzare il jid del mittente nel database in modo da sapere che devi inviare loro aggiornamenti di presenza quando necessario.
      • Specifiche: http://xmpp.org/rfcs/rfc6121.html# Sub-request-handle
      • <presence type="unsubscribe">

          .
        • Il mittente vuole interrompere la ricezione degli aggiornamenti di presenza da parte tua. Dovresti rimuoverli dall'elenco delle persone sottoscritte ai tuoi aggiornamenti e quindi inviare <presence type="unsubscribed"> e <presence type="unavailable">.
        • Specifiche: http://xmpp.org/rfcs/rfc6121.html# Sub-Annulla-Inbound (Anche se il testo è su misura di più verso i server dei componenti qui).
        • <presence type="probe">
            .
          • Il mittente chiede la tua attuale presenza. Semplicemente rispondi con la tua ultima presenza di Stanza per quell'utente. Questo è in genere inviato dal server dell'utente quando accedono.

            Ricezione della presenza di utenti in un componente

            Inoltre, se si desidera che il componente conosca la presenza degli utenti, è necessario inviare una richiesta di sottoscrizione a loro: <presence type="subscribe">. Dovresti essere pronto a ricevere un'approvazione (<presence type="subscribed">) o negazione (<presence type="unsubscribed">).

            Quando il componente arriva per la prima volta online, può recuperare la presenza corrente per un utente inviando <presence type="probe"> a ciascun utente. Non è necessario farlo più di una volta per utente mentre il componente è in esecuzione: il server dell'utente invierà automaticamente gli aggiornamenti di presenza se l'utente ha approvato la richiesta di abbonamento come sopra.

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