【问题标题】:Getting online presences for Facebook Chat获取 Facebook Chat 的在线状态
【发布时间】:2012-11-15 14:24:06
【问题描述】:

我正在使用 libpurple 连接到 FB 聊天。问题是我没有从通过移动 Facebook 应用程序在线的朋友那里获得在线状态。

但如果这样的朋友给我发消息,我会同时为他收到消息和在线状态。

看起来像这样:

(14:23:08) jabber: Recv (ssl)(191): <message from="-mybyddyid@chat.facebook.com"     to="myownid@chat.facebook.com/b94353f3_4CE87B53BB319" type="chat"><composing  xmlns="http://jabber.org/protocol/chatstates"/></message>

(14:23:10) jabber: Recv (ssl)(188): <message from="-mybyddyid@chat.facebook.com"   to="myownid@chat.facebook.com/b94353f3_4CE87B53BB319" type="chat"><active   xmlns="http://jabber.org/protocol/chatstates"/></message>

(14:23:11) jabber: Recv (ssl)(166): <presence from="-mybyddyid@chat.facebook.com" to="myownid@chat.facebook.com/b94353f3_4CE87B53BB319"><x xmlns="vcard-temp:x:update"><photo/></x></presence>

所以我想知道这是我的错还是 Facebook Chat 实施的限制。

【问题讨论】:

    标签: facebook xmpp facebook-chat


    【解决方案1】:

    我认为状态更新会有延迟。也许您可以检查一下,要求您的朋友不要发送消息并等待状态发生变化。从 facebook 聊天开发者页面 [1] 看来,当您更改它时,状态会在此之后更新。

    此外,在同一页面中,限制之一是 facebook 聊天服务器不支持存在探测。如果 XMPP 服务器在用户登录并发送初始状态后还没有联系人的状态信息,则向联系人发送状态探测(参见 RFC 3921 [2] 的 5.1.1 节和 RFC 3921 [2] 的第 4.3.1 节RFC 6121 [3])。

    如果服务器无法发送在线探测,它可能没有联系人的在线信息。我不知道 facebook 聊天服务器是如何实现的,但我猜测当联系人执行某些操作(如发送消息/更新状态)时,服务器会假定联系人在线并发送状态。 (我这里可能错了,如果我错了,请纠正我!)

    参考资料:

    [1]http://developers.facebook.com/docs/chat/

    [2]http://xmpp.org/rfcs/rfc3921.html

    [3]http://xmpp.org/rfcs/rfc6121.html

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多