在与服务器通信时,我面临一个问题:
[request] <stream:stream to="chat.facebook.com" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" version="1.0">
[response] <?xml version="1.0"?><stream:stream id="0D752DF3" from="chat.facebook.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xml:lang="en"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features>
[request] <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="X-FACEBOOK-PLATFORM" />
[response] <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">[removed]</challenge>
[request] <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">[removed]</response>
[response] <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
[response] <?xml version="1.0"?><stream:stream id="4FC996C0" from="chat.facebook.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xml:lang="en"><stream:features><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></stream:features>
[request] <iq type="set" id="1"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind" /></iq>
[response] <iq id="1" type="result"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>-[removed]@chat.facebook.com/[removed]</jid></bind></iq>
[request] <iq type="set" id="2" to="chat.facebook.com"><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></iq>
[response] <iq type="result" from="chat.facebook.com" id="2"><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></iq>
[request] <iq type="get" id="3" from="-[removed]@chat.facebook.com/[removed]"><query xmlns="jabber:iq:roster"/></iq>问题是最后一个请求:
[request] <iq type="get" id="3" from="-[removed]@chat.facebook.com/[removed]"><query xmlns="jabber:iq:roster"/></iq>根据文档,应该只返回在线用户。但是,它将返回所有用户朋友。如何只获取/过滤在线用户?
发布于 2011-03-28 03:13:02
文档在RFC 3921或更高版本的RFC 3921之二中,很快就会得到RFC编号。有关您检索名册的详细信息,请参见2.1.3部分,它是所有联系人的列表,而不管它们的存在状态如何。为了接收到你所订阅的人的存在,你把你自己的存在发送到开始流动。
你发送:
<presence/>并将从您的每个在线联系人的每个设备中接收到一个存在节:
<presence from='friend1@example.com/deviceID/>
<presence from='friend2@example.com/deviceID/>等等,你不知道什么时候你收到了“所有”的存在,因为你的联系人可能会改变他们的存在,而这正在发生。相反,请考虑进入存在信息流,在那里您将被尽快更新,然后收到任何进一步更改的通知。
发布于 2011-04-03 02:15:48
名册或多或少是你的联系列表(我不知道确切的定义),但在Facebook上,它似乎与你的朋友名单完全一样。在Facebook聊天中,服务器在按照Joe的指示发送初始在场信息后,会非常快地发送给您的朋友。事实上,我根本没有查询过名册,因为我对不在线的朋友不感兴趣。
https://stackoverflow.com/questions/5452154
复制相似问题