这是当我从服务器上的名册中手动删除联系人时服务器向我发送的内容(openfire):
'<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"/>'
Run Code Online (Sandbox Code Playgroud)
如果我以“取消订阅”状态响应节(根据 RFC 3921,我认为这是正确的),服务器会不断向我发送更多“取消订阅”状态的垃圾邮件。
无论哪种方式,下次我的客户登录时,花名册中都没有任何变化。难道我做错了什么?
这取决于您在谈论哪个客户 - 无论是订阅者还是订阅者。
.
如果客户是订阅者,则什么都没有:
根据第 9.4 节,如果订阅者发送unsubscribe请求,或其他原因导致客户端取消订阅,则服务器必须确认请求/报告状态更改与unsubscribed响应。互动到此结束。
如果订阅者unsubscribe每次被告知它unsubscribed从服务器接收到一个状态,告诉它先前的订阅已被删除时发送另一个请求,那么它永远不会结束。
.
如果客户端是订阅节点,则可能会发送一个unsubscribe确认删除订阅是允许的,但是当您在正常机制之外更改名册时,我不确定这是否仍然有效。
我对 9.4 中表格的阅读是针对取消订阅期间订阅者和服务器之间的消息的:
subscriber server subscribee
| -- unsubscribe --> | |
| | -- unsubscribe --> |
| | <- unsubscribed -- | (optional)
| | -- unsubscribed -> |
| <- unsubscribed -- | |
Run Code Online (Sandbox Code Playgroud)
我对第 8.6 节的阅读,名册删除是这样的:
subscriber server subscribee
| ----- remove ----> | |
| | -- unsubscribe --> |
| | -- unsubscribed -> |
| | -- unavailable --> |
| <- unsubscribed -- | |
| <-- unavailable -- | |
Run Code Online (Sandbox Code Playgroud)
无需任何客户确认。
| 归档时间: |
|
| 查看次数: |
2412 次 |
| 最近记录: |