使用FQL / Chat API实时更新用户朋友的online_presence

时间:2013-01-04 20:07:26

标签: ruby-on-rails facebook xmpp facebook-fql facebook-chat

我目前正在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),那就太棒了,因为我觉得定期查询只需要一段时间,当用户数量少于。

1 个答案:

答案 0 :(得分:3)

最好的方法是使用XMPP。

为了通过XMPP整合Facebook聊天,我认为Rails的最佳方式是

  1. Rails + StropheJS
  2. 除此之外,您还可以添加ember.js之类的内容(但这不是必需的)
  3. 总的来说,系统看起来像

      

    StropheJS(客户端JS)----> XMPP BOSH ManagereJabberd / Punjab)----> Facebook的   服务器

    除了这一切之外,如果您不熟悉XMPP,那么本书"Professional XMPP Programming with JavaScript and jQuery"值得一读,并且有很多strophejs的例子