2012-03-22 48 views
0

我們創建一個使用XMPP協議的應用程序。最初我們開始開發並使用一些XMPP服務器進行調試。這是好的,我們設法通過在本地存儲圖形文件並在接收用戶存在更新時檢查文件散列來防止冗餘化身加載。XMPP Openfire服務器不斷請求發送用戶頭像圖形

但現在我們切換到新的Openfilre服務器,是它讓我們發送所有可用的用戶化身不僅當我們請求電子名片也是我們在用戶登錄後立即使用一些消息:

<message id="[email protected][email protected]__jBUhd" to="[email protected]/FFFChat" from="[email protected]"> 
     <event xmlns="http://jabber.org/protocol/pubsub#event"> 
      <items node="urn:xmpp:avatar:data"> 
       <item id="66d0dee0216e5466fe17403f1da16aa39d4e1698"> 
        <data xmlns="urn:xmpp:avatar:data">... SOME BIG CHUNK OF DATA ...</data> 
      </item> 
      </items> 
     </event> 
     <delay xmlns="urn:xmpp:delay" stamp="2012-03-16T00:00:32.298Z"/> 
     <addresses xmlns="http://jabber.org/protocol/address"> 
      <address jid="[email protected]/53bf00a8" type="replyto"/> 
     </addresses> 
    </message> 

它使我想知道什麼確切的傳出消息從Openfire請求它?或者只是Openfire服務器配置爲始終向我們發送整個花名冊的所有頭像圖形?

這怎麼解決,所以我們不會有這種多餘的流量?

以防萬一,這些都傳出消息:

<stream:stream to="fffchat.openfire.local" xml:lang="en" version="1.0" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams"> 

<starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/> 

<?xml version="1.0"?> 

<stream:stream to="fffchat.openfire.local" xml:lang="en" version="1.0" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams"> 

<auth mechanism="DIGEST-MD5" xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/> 

<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9Imphc29uIixyZWFsbT0icHBpY2hhdCIsbm9uY2U9ImVhcGVpTlNFZ3NOZzRXRFlsVC9zd1cyLzVWbzMzQWlsYzRvZWFRRFIiLGNub25jZT0iMDBERUFEQkVF 

<auth mechanism="PLAIN" xmlns="urn:ietf:params:xml:ns:xmpp-sasl">AGphc29uAGFiYzEyMw==</auth> 

<?xml version="1.0"?> 

<stream:stream to="fffchat.openfire.local" xml:lang="en" version="1.0" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams"> 

<iq id="_xmpp_bind1" type="set"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><resource>PPIChat</resource></bind></iq> 

<iq id="_xmpp_session1" type="set"><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></iq> 

<iq id="roster1" type="get"><query xmlns="jabber:iq:roster"/></iq> 

<presence><show>chat</show><status>online</status><x xmlns="vcard-temp:x:update"><photo>16286eb46a54fb48d70dc4fbd548bcd16f78cd34</photo></x></presence> 

<iq type="get"><query xmlns="jabber:iq:private"><ppidata xmlns="ppi:userdata:favorites"/></query></iq> 

回答

1

它看起來像你試圖使用XEP-0084,搞砸了,然後切換到XEP-0153。您可能會明確訂閱對測試帳戶中一個或多個人物頭像的更改,而不是正確實施XEP-0163,這在開始時可能會相當混亂。最簡單的解決方法是隻使用一個不同的帳戶。如果你想清理它,發送XEP-0060取消訂閱協議,以響應您獲得的每個發佈:

<iq type='set' 
    from='[email protected]/FFFChat' 
    to='[email protected]' 
    id='unsub1'> 
    <pubsub xmlns='http://jabber.org/protocol/pubsub'> 
    <unsubscribe 
     node='urn:xmpp:avatar:data' 
     jid='[email protected]'/> 
    </pubsub> 
</iq> 
+0

謝謝喬,真正注意提供一個確切的請求。不過,它返回了錯誤代碼400。奇怪。我們的客戶沒有這樣的流量來挑起這一點。 – AlexanderVX 2012-03-28 00:31:11