Frage

Hier ist, was der Server mir sendet (Openfire), wenn ich manuell einen Kontakt aus dem Roster auf dem Server löschen:

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

Wenn ich mit einer ‚unsubscribe‘ Präsenz Strophe reagieren (was meiner Meinung nach richtig ist nach RFC 3921), der Server hält mich Spamming mit mehr ‚unsubscribed‘ Präsenzen.

So oder so, das nächste Mal, wenn mein Kunde anmeldet, hat nichts in dem Kader verändert. Mache ich etwas falsch?

War es hilfreich?

Lösung

Es hängt davon ab, welche Client Sie sprechen - ob die Teilnehmer oder die subscribee sind

.

.

Wenn der Client ist der Teilnehmer, dann nichts:

Nach Abschnitt 9.4 , wenn die Teilnehmer einen unsubscribe sendet Anfrage, oder etwas anderes bewirkt, dass der Kunde unsubscribed zu sein, muss der Server die Anforderung / berichtet die Zustandsänderung mit einer unsubscribed Antwort bestätigen. Das ist das Ende der Interaktion.

Wenn die Teilnehmer eines andere unsubscribe Anforderung senden jedes Mal, es wird darüber informiert, dass es einen unsubscribed Status vom Server empfängt es zu sagen, dass ein vorheriges Abonnement entfernt worden ist, dann wird es nie enden.

.

Wenn der Client die abonnierten Knoten ist, dann kann es eine unsubscribe zu bestätigen gesendet werden, dass das Abonnement zu entfernen ist erlaubt, aber ob das noch steht, wenn Sie die Roster sind Wechsel außerhalb des normalen Mechanismus Ich bin nicht sicher.

Meine Lesart der Tabelle in 9.4 ist für die Nachrichten zwischen subscribee und Server während der Abmeldung ist:

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

Meine Lektüre von Abschnitt 8.6 , roster Entfernung ist dies:

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

Ohne Bestätigung von beiden Client erforderlich.

Andere Tipps

Ich bin zu rostig der Lage sein, Ihnen eine direkte Antwort zu geben, aber da es ein paar Stunden ohne Antworten gewesen lassen Sie mir nur einen Vorschlag machen ...

Laden Sie Pidgin oder einen anderen Client, der die xmlstream anmelden können, die Abmelde von diesem Client senden, und kopieren Sie den Code in das Protokoll.

Das wird entweder Ihnen helfen, die richtigen Strophen bekommen oder es wird eine Inkompatibilität in Openfire zu identifizieren (unwahrscheinlich, aber wer weiß).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top