Qual é a resposta adequada cliente XMPP a um estrofe?
-
03-07-2019 - |
Pergunta
Aqui está o que o servidor está enviando-me (openfire) quando eu excluir manualmente um contato a partir da lista no servidor:
'<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 eu responder com uma estrofe presença 'unsubscribe' (que eu acho que está de acordo correta para RFC 3921), o servidor mantém me spam com mais presenças 'sobras'.
De qualquer maneira, a próxima vez que meus logs do cliente em, nada mudou na lista. Estou fazendo algo errado?
Solução
Depende qual cliente você está falando -. Se é o assinante ou o subscribee
.
Se o cliente é assinante, então nada:
De acordo com a seção 9.4 , se o assinante envia um unsubscribe
pedido, ou qualquer outra coisa faz com que o cliente a ser sobras, o servidor deve reconhecer o pedido / comunicar a alteração do estado com uma resposta unsubscribed
. Isso é o fim da interação.
Se o assinante envia um outro pedido unsubscribe
cada vez que for informado que ele recebe um status unsubscribed
do servidor dizer-se que uma assinatura anterior foi removido, então ele nunca vai acabar.
.
Se o cliente é o nó subscrito, então ele pode ser enviado um unsubscribe
para confirmar que a remoção da assinatura é permitido, mas se isso ainda está de pé quando você está mudando o exterior roster do mecanismo normal eu não tenho certeza.
A minha leitura da tabela em 9,4 é para as mensagens entre subscribee e servidor durante cancelamento é:
subscriber server subscribee
| -- unsubscribe --> | |
| | -- unsubscribe --> |
| | <- unsubscribed -- | (optional)
| | -- unsubscribed -> |
| <- unsubscribed -- | |
A minha leitura da seção 8.6 , remoção lista é a seguinte:
subscriber server subscribee
| ----- remove ----> | |
| | -- unsubscribe --> |
| | -- unsubscribed -> |
| | -- unavailable --> |
| <- unsubscribed -- | |
| <-- unavailable -- | |
Com nenhuma confirmação exigida por qualquer cliente.
Outras dicas
Estou enferrujado demais para ser capaz de dar-lhe uma resposta direta, mas desde já faz algumas horas sem respostas deixe-me fazer uma sugestão ...
Coloque-se pidgin ou algum outro cliente que pode registrar a xmlstream, enviar o unsubscribe desse cliente, e depois copiar o código no registro.
que quer ajudá-lo a obter as estrofes corretas ou ele vai identificar uma incompatibilidade na openfire (improvável, mas quem sabe).