我的一個jabber的機器人的觸頭,閒聊協議問題
其 '訂閱' 屬性值是 '到',
其中根據閒聊協議意味着:
****的機器人已經訂閱了對方的在線狀態, 但對方未簽約我的機器人。****
但是,當我登錄到對方賬戶,
我可以看到,機器人在線,
爲什麼會這樣呢?
jabber協議現在處於混亂狀態嗎?
我的一個jabber的機器人的觸頭,閒聊協議問題
其 '訂閱' 屬性值是 '到',
其中根據閒聊協議意味着:
****的機器人已經訂閱了對方的在線狀態, 但對方未簽約我的機器人。****
但是,當我登錄到對方賬戶,
我可以看到,機器人在線,
爲什麼會這樣呢?
jabber協議現在處於混亂狀態嗎?
它已經有一段時間,因爲我已經與XMPP打亂,但規範的快速重新解讀有我以爲你有「到」混合起來的意思。如果用戶在機器人的名單上列爲「to」,那麼這意味着用戶正在跟蹤機器人的存在,而不是相反。 「來自」意味着機器人正在關注 - 或將從用戶帳戶接收存在段落。
你知道用戶的名冊是什麼樣的嗎?如果事情同步了,用戶的名單應該把機器人列爲「from」。
哦,你是對的,我混淆了。但通過我的機器人帳戶,我可以在線查看用戶帳戶,並且我多次重新訂閱了該用戶帳戶,但仍然無效,例如,「訂閱」是仍然'到'。 – omg 2009-06-03 14:03:04
如果你說「我的機器人有一個訂閱到岸」或「岸有一個訂閱從我的機器人」,「從」和「到」會更有意義。
因此,如果機器人的名單有:
<item jid='[email protected]' subscription='to'/>
那麼機器人就會看到岸邊的存在,但岸上不會看到機器人的存在,假設岸邊的陣容有:
<item jid='[email protected]' subscription='from'/>
這是由於網絡問題等原因,這些狀態可能會失去同步。在這種情況下,要解決這個問題最簡單的方法是刪除(這應該結束了有效地消除對對方的項目)的項目,然後重新添加(見RFC 3921bis, section 2.5.1瞭解詳細信息):
<iq from='[email protected]/background'
id='delete_1'
type='set'>
<query xmlns='jabber:iq:roster'>
<item jid='[email protected]' subscription='remove'/>
</query>
</iq>
<presence type='subscribe'
from='[email protected]/background'
to='[email protected]'/>
的需要記住的是,即使訂閱的方向如圖所示,機器人可能會將定向存在發送到岸上,在這種情況下,即使他沒有訂閱機器人,岸邊也會從兩者中看到存在。檢查機器人的協議日誌,你可能會看到類似:
<presence to='[email protected]'/>
好評! 你說網絡問題或類似問題時,快速修復就是在「雙方」上刪除然後重新添加。但實際上,另一方是用戶,所以它似乎有點不適用?是否有其他解決方案? – omg 2009-06-04 17:41:40
你也許應該標記這個XMPP。 – 2009-06-03 03:56:56