XMPP Openfire服务器继续发送用户头像图形,尽管未被请求
我们创建了一个使用XMPP协议的应用程序。最初我们开始开发并使用一些XMPP服务器进行调试。这没问题,我们通过在本地存储图形文件并在接收用户状态更新时检查文件散列来防止冗余的化身加载 但现在我们切换到新的Openfilre服务器,它不断向我们发送所有可用的用户头像,不仅是在我们请求VCard时,而且在我们的用户登录后立即使用一些消息:XMPP Openfire服务器继续发送用户头像图形,尽管未被请求,xmpp,avatar,Xmpp,Avatar,我们创建了一个使用XMPP协议的应用程序。最初我们开始开发并使用一些XMPP服务器进行调试。这没问题,我们通过在本地存储图形文件并在接收用户状态更新时检查文件散列来防止冗余的化身加载 但现在我们切换到新的Openfilre服务器,它不断向我们发送所有可用的用户头像,不仅是在我们请求VCard时,而且在我们的用户登录后立即使用一些消息: <message id="ca82demo01@fffchat__jason@fffchat__jBUhd" to="jason@fffhat/FFF
<message id="ca82demo01@fffchat__jason@fffchat__jBUhd" to="jason@fffhat/FFFChat" from="ca82demo01@fffchat">
<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="ca82demo01@fffchat/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>
DXNLCM5HBWU9IMPHC29UIIXYZWFSBT0IchBPY2HHDCISB9UY2U9IMVHCGVPTLNFZ3NOZRxRFLSVC9ZD1CYLZVWBZMZQWLSYZRVZWFRRFIILGNUB25JZT0IMDBERUFEQKVF
AGphc29uAGFiYzEyMw==
皮查特
ChatOnline 16286EB46A54FB48D70DC4FBD548BCD16F78CD34
看起来您试图使用它,把它搞砸了,然后切换到了。您可能在您的测试帐户上明确地订阅了对一个或多个用户化身的更改,而不是正确地实现,这在一开始可能会很混乱。最简单的解决方法是使用不同的帐户。如果要清理,请发送“取消订阅协议”以响应您获得的每次发布:
<iq type='set'
from='jason@fffhat/FFFChat'
to='ca82demo01@fffchat'
id='unsub1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<unsubscribe
node='urn:xmpp:avatar:data'
jid='jason@fffhat'/>
</pubsub>
</iq>
谢谢Joe,他非常注意提供准确的请求。不过,它会返回错误代码400。奇怪。我们的客户没有这样的流量来引发这种情况。