2013-01-04 45 views
2

我目前正在Facebook上開發一個應用程序,其中包含登錄用戶的朋友列表並顯示其在線狀態。爲了得到這個,我用下面的FQL查詢:使用FQL /聊天API實時更新用戶朋友的online_presence

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

我已經接受了唯一的答案,因爲如果我沒有和賞金結束,我將無法接受任何回答這個問題。 –

+0

我會處理所提供的唯一答案,但仍然可以找到答案。 –

回答

3

最好的方法是使用XMPP。

對於通過XMPP的Facebook聊天整合,我認爲Rails的最好辦法是

  1. 的Rails + StropheJS
  2. 除此之外,您可以包括像ember.js(但是這不是必須的)

總的來說,這套系統看起來像

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

除了這一切,如果你是新的XMPP則書"Professional XMPP Programming with JavaScript and jQuery"值得一個閱讀和有很多strophejs的例子

+0

感謝您的回覆,但您的回答並沒有真正讓我獲得任何回報。你能否詳細解釋一下,可能會列出一些能夠快速完成工作的步驟。 –

+0

@JatinGanhotra這是一篇博客文章,討論如何設置這個(使用ruby gem xmpp4r)http:// siddharth-ravichandran。com/2011/01/21/multiuser-chat-using-xmpp-and-orbited-using-ruby-on-rails /。我打算寫下所有必要的步驟,但這需要時間。將盡快更新答案。同時檢查是否有幫助http://www.slideshare.net/ca168168/realtime-webwithrailsxmpp – Nishant

+0

感謝您的快速回復。我將從此開始,並等待您更新的答案。 –