Quelle est la réponse appropriée du client XMPP à un < type de présence = non abonné & # 8230; > strophe?

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

  •  03-07-2019
  •  | 
  •  

Question

Voici ce que le serveur m'envoie (openfire) lorsque je supprime manuellement un contact de la liste sur le serveur:

'<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"/>'

Si je réponds par une strophe de présence "désabonnement" (ce qui, à mon avis, est conforme à la norme RFC 3921), le serveur m'envoie des spams avec davantage de présences "non souscrites".

Quoi qu'il en soit, lors de la prochaine connexion de mon client, rien n’a changé dans la liste. Est-ce que je fais quelque chose de mal?

Était-ce utile?

La solution

Cela dépend du client dont vous parlez, qu'il s'agisse de l'abonné ou de l'abonné.

.

Si le client est l'abonné, rien:

Selon la section 9.4 , si l'abonné envoie un < code> unsubscribe , ou si quelque chose d'autre provoque la désabonnement du client, le serveur doit accuser réception de la demande / signaler le changement d'état avec une réponse unsubscribe . C'est la fin de l'interaction.

Si l'abonné envoie une autre demande unsubscribe chaque fois qu'il est informé qu'il reçoit un statut unsubscribe du serveur lui indiquant qu'un abonnement précédent a été supprimé, il ne finis jamais.

.

Si le client est le nœud abonné, un unsabcribe peut lui être envoyé pour confirmer que la suppression de l'abonnement est autorisée, mais que cela est toujours valable si vous modifiez la liste en dehors du délai normal. mécanisme je ne suis pas sûr.

La lecture de la table en 9.4 concerne les messages entre abonné et serveur lors de la désinscription, comme suit:

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

À la lecture de la section 8.6 , l'enlèvement de la liste est le suivant:

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

Sans accusé de réception requis par l'un ou l'autre client.

Autres conseils

Je suis trop rouillé pour pouvoir vous donner une réponse directe, mais comme cela fait quelques heures sans réponse, permettez-moi de faire une suggestion ...

Chargez pidgin ou un autre client pouvant enregistrer le flux xml, envoyez la désinscription de ce client, puis copiez le code affiché dans le journal.

Cela vous aidera à obtenir les strophes correctes ou à identifier une incompatibilité en openfire (peu probable, mais qui sait).

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