Quelle est la réponse appropriée du client XMPP à un < type de présence = non abonné & # 8230; > strophe?
-
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?
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).