首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jabber (XMPP)获取在线朋友

使用Jabber (XMPP)获取在线朋友
EN

Stack Overflow用户
提问于 2011-03-27 20:25:25
回答 2查看 4K关注 0票数 1

在与服务器通信时,我面临一个问题:

代码语言:javascript
复制
[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>

问题是最后一个请求:

代码语言:javascript
复制
[request]    <iq type="get" id="3" from="-[removed]@chat.facebook.com/[removed]"><query xmlns="jabber:iq:roster"/></iq>

根据文档,应该只返回在线用户。但是,它将返回所有用户朋友。如何只获取/过滤在线用户?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-28 03:13:02

文档在RFC 3921或更高版本的RFC 3921之二中,很快就会得到RFC编号。有关您检索名册的详细信息,请参见2.1.3部分,它是所有联系人的列表,而不管它们的存在状态如何。为了接收到你所订阅的人的存在,你把你自己的存在发送到开始流动。

你发送:

代码语言:javascript
复制
<presence/>

并将从您的每个在线联系人的每个设备中接收到一个存在节:

代码语言:javascript
复制
<presence from='friend1@example.com/deviceID/>
<presence from='friend2@example.com/deviceID/>

等等,你不知道什么时候你收到了“所有”的存在,因为你的联系人可能会改变他们的存在,而这正在发生。相反,请考虑进入存在信息流,在那里您将被尽快更新,然后收到任何进一步更改的通知。

票数 2
EN

Stack Overflow用户

发布于 2011-04-03 02:15:48

名册或多或少是你的联系列表(我不知道确切的定义),但在Facebook上,它似乎与你的朋友名单完全一样。在Facebook聊天中,服务器在按照Joe的指示发送初始在场信息后,会非常快地发送给您的朋友。事实上,我根本没有查询过名册,因为我对不在线的朋友不感兴趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5452154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档