我目前正在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),那就太棒了,因为我觉得定期查询只需要一段时间,当用户数量少于。
答案 0 :(得分:3)
最好的方法是使用XMPP。
为了通过XMPP整合Facebook聊天,我认为Rails的最佳方式是
总的来说,系统看起来像
StropheJS(客户端JS)----> XMPP BOSH Manager(eJabberd / Punjab)----> Facebook的 服务器
除了这一切之外,如果您不熟悉XMPP,那么本书"Professional XMPP Programming with JavaScript and jQuery"值得一读,并且有很多strophejs的例子