2

我目前正在 facebook 中开发一个应用程序,其中包含登录用户的朋友列表并显示他们的在线状态。为此,我使用了以下 FQL 查询:

SELECT name,uid, online_presence FROM user WHERE online_presence IN ('active', 'idle') AND uid IN ( SELECT uid2 FROM friend WHERE uid1 = me())

friends_online_presence是一个扩展权限并返回 Facebook 聊天状态(一个字符串,活动、空闲、离线或错误之一)。

我的问题是如何获得朋友在线状态变化的实时更新?

选项 1: 在后台进程中定期查询 Facebook API
选项 2: 连接 XMPP 以获取实时更新(下面重复问题的答案)

人们在此之前也问过这个问题,这里有一些重复(未解决):
facebook-api-real-time-friends-online-presence-update &
Is-it-possible-to-subscribe-to-real-time-updates -for-user-online-presence

我想知道是否有人解决了这个问题,如果是,你是如何解决的。

如果您能详细说明一下选项 2(使用 XMPP/Jabber),那就太好了,因为当用户数量较少时,我觉得定期查询只够了一段时间。

4

1 回答 1

3

最好的方法是使用 XMPP。

对于通过 XMPP 集成 facebook 聊天,我认为 Rails 中最好的方法是

  1. Rails + StropheJS
  2. 除此之外,您可以包含类似ember.js的内容(但这不是必需的)

总的来说,系统看起来像

StropheJS(客户端 JS)----> XMPP BOSH 管理器eJabberd / Punjab)----> Facebook 服务器

除此之外,如果你是 XMPP 的新手,那么《Professional XMPP Programming with JavaScript and jQuery》这本书值得一读,其中有很多关于 strophejs 的示例

于 2013-01-08T16:53:03.617 回答