2009-06-03 106 views
0

我的一個jabber的機器人的觸頭,閒聊協議問題

其 '訂閱' 屬性值是 '到',

其中根據閒聊協議意味着:

****的機器人已經訂閱了對方的在線狀態, 但對方未簽約我的機器人。****

但是,當我登錄到對方賬戶,

我可以看到,機器人在線,

爲什麼會這樣呢?

jabber協議現在處於混亂狀態嗎?

+0

你也許應該標記這個XMPP。 – 2009-06-03 03:56:56

回答

1

它已經有一段時間,因爲我已經與XMPP打亂,但規範的快速重新解讀有我以爲你有「到」混合起來的意思。如果用戶在機器人的名單上列爲「to」,那麼這意味着用戶正在跟蹤機器人的存在,而不是相反。 「來自」意味着機器人正在關注 - 或將從用戶帳戶接收存在段落。

你知道用戶的名冊是什麼樣的嗎?如果事情同步了,用戶的名單應該把機器人列爲「from」。

+0

哦,你是對的,我混淆了。但通過我的機器人帳戶,我可以在線查看用戶帳戶,並且我多次重新訂閱了該用戶帳戶,但仍然無效,例如,「訂閱」是仍然'到'。 – omg 2009-06-03 14:03:04

3

如果你說「我的機器人有一個訂閱到岸」或「岸有一個訂閱從我的機器人」,「從」和「到」會更有意義。

因此,如果機器人的名單有:

<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]'/> 
+0

好評! 你說網絡問題或類似問題時,快速修復就是在「雙方」上刪除然後重新添加。但實際上,另一方是用戶,所以它似乎有點不適用?是否有其他解決方案? – omg 2009-06-04 17:41:40