Qual è la risposta corretta del client XMPP a un tipo di presenza < = annullato iscrizione & # 8230; > stanza?

StackOverflow https://stackoverflow.com/questions/605177

  •  03-07-2019
  •  | 
  •  

Domanda

Ecco cosa mi sta inviando il server (openfire) quando elimino manualmente un contatto dall'elenco sul server:

'<iq type="set" id="183-87" to="foo@edmund.local/hydra"><query xmlns="jabber:iq:roster"><item jid="bar@yahoo.edmund.local" name="baz" ask="unsubscribe" subscription="none"><group>Buddies</group></item></query></iq>'
'<iq type="set" id="187-88" to="foo@edmund.local/hydra"><query xmlns="jabber:iq:roster"><item jid="bar@yahoo.edmund.local" name="baz" subscription="none"><group>Buddies</group></item></query></iq>'
'<presence type="unsubscribed" to="foo@edmund.local" from="bar@yahoo.edmund.local"/>'

Se rispondo con una stanza di presenza "annulla iscrizione" (che ritengo corretta secondo RFC 3921), il server continua a inviarmi spam con più presenze "non iscritte".

Ad ogni modo, la prossima volta che il mio client accede, nel registro non è cambiato nulla. Sto facendo qualcosa di sbagliato?

È stato utile?

Soluzione

Dipende dal cliente di cui stai parlando, che si tratti dell'abbonato o dell'abbonato.

.

Se il client è l'abbonato, allora niente:

Secondo sezione 9.4 , se l'abbonato invia un < code> unsubscribe , o qualcos'altro causa l'annullamento dell'iscrizione al client, il server deve confermare la richiesta / segnalare la modifica dello stato con una risposta unsubsceded . Questa è la fine dell'interazione.

Se l'abbonato invia un'altra richiesta unsubscribe ogni volta che viene informato che riceve uno stato unsubsceded dal server dicendogli che un abbonamento precedente è stato rimosso, allora lo farà non finire mai.

.

Se il client è il nodo sottoscritto, è possibile che venga inviato un unsubscribe per confermare che è consentita la rimozione dell'abbonamento, ma se ciò rimane valido quando si cambia il roster al di fuori del normale meccanismo non sono sicuro.

La mia lettura della tabella in 9.4 è per i messaggi tra abbonato e server durante la disiscrizione è:

subscriber            server             subscribee
    | -- unsubscribe --> |                    |
    |                    | -- unsubscribe --> |
    |                    | <- unsubscribed -- | (optional)
    |                    | -- unsubscribed -> |
    | <- unsubscribed -- |                    |

La mia lettura di sezione 8.6 , la rimozione del roster è questa:

subscriber            server             subscribee
    | ----- remove ----> |                    |
    |                    | -- unsubscribe --> |
    |                    | -- unsubscribed -> |
    |                    | -- unavailable --> |
    | <- unsubscribed -- |                    |
    | <-- unavailable -- |                    |

Senza riconoscimento richiesto da nessuno dei client.

Altri suggerimenti

Sono troppo arrugginito per poterti dare una risposta diretta, ma dato che sono passate alcune ore senza risposte lasciami dare un suggerimento ...

Carica pidgin o qualche altro client in grado di registrare xmlstream, inviare l'annullamento dell'iscrizione da quel client e quindi copiare il codice che vedi nel registro.

Ciò ti aiuterà a ottenere le stanze corrette o identificherà un'incompatibilità a fuoco aperto (improbabile, ma chi lo sa).

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