2010-03-18 139 views
7

我不確定建立聊天應用程序的最佳堆棧。目前,我正在考慮的兩個主要選項:聊天應用程序:pubsubhubbub vs xmpp

  • Facebook的龍捲風
    • 缺點:不使用主聊天協議XMPP但PubSubHubbub通訊
    • 優點:我真的很喜歡它的發展簡單(Web服務器+ webframework); pubsubhubbub似乎比xmpp更簡單;我知道蟒蛇
  • XMPP +博世,旁遮普邦,ejabberd
    • 缺點:不知道二郎;整體看起來有點難以發展
    • 優點:採用XMPP協議

聊天應用程序將需要具備以下條件:

  • 悄悄話
  • 公室
  • 私人房間
  • 房間聊天記錄(不是永遠只是最後n條消息)
  • HTML中嵌入
  • URL聊天室

這兩種選擇似乎可伸縮的所以這不是真的我的擔心(我們正在考慮在運行Amazon的EC2應用爲好)。我知道有一個項目使用龍捲風來構建xmpp服務器,但它尚未準備好用於生產,我們的截止日期並不那麼長。基本上我主要擔心的是易於開發,後來使用pubsubhubbub開發聊天應用感到後悔,但是我在某處讀到PubSubHubbub可能會最終取代XMPP,因爲REST取代了SOAP--那麼您怎麼看?

更新:你知道任何使用xmpp的開源解決方案,它支持MUC(私有公開&)和PM嗎?

+0

請注意,PubSubHubbub(PuSH)甚至與XMPP無關。 PuSH是一個非常基本的發佈 - 訂閱協議,非常類似於[Dialback](http://xmpp.org/extensions/xep-0220.html)進行身份驗證。 XMPP更多,它不適合這個評論框。 – Zash 2011-10-09 06:48:44

回答

11

轉到XMPP。

開箱即用,ejabberd支持您的所有需求。您不需要查看任何erlang併爲ejabberd編寫自定義模塊。 在Strophejs中,瀏覽器中的XMPP(這是你顯然在做的)非常棒。

對於關於pubsubhubbub替換XMPP的最後一個問題,請不要指望它。 XMPP已經有超過10年的歷史,在客戶端和服務器上都是開放源代碼和專有的可互操作的實現,並且非常優雅,所以它不會消​​失。

而且您正在開發一個聊天應用程序,它是XMPP的用途。

+0

Strophe看起來不錯(它也被Aristochat使用)。謝謝:) – Sofia 2010-03-18 12:15:10

4

Facebook Tornao根本不使用PubSubHubbub!

轉到XMPP,它是專爲您正在尋找的。龍捲風不是專門爲此設計的,而是針對長期的投票請求。

沒有必要使用旁遮普語,ejabbed http綁定模塊現在做的不錯。另外,你不需要學習Erlang,就像寫一個使用Apache的webapp時你不需要學習C一樣:)看看像Aristochat這樣的東西。唯一需要玩的是XMPP服務器和聊天室的配置,然後是客戶端(在瀏覽器中)的Javascript。

+0

謝謝。 Aristochat看起來很有希望。同時還發現了Speeqe(http://code.stanziq.com/speeqe)。我會檢查他們兩個。根據這個http://www.readwriteweb.com/archives/where_is_the_real_time_web_message_bus.php龍捲風使用pubsubhubbub。 – Sofia 2010-03-18 12:10:48

0

PubSubHubbub(PuSH)從來就不是用於聊天應用程序的。它有時被稱爲「網絡IM」。我建議你通過這張幻燈片:Realtime Ruby for the Realtime Web by igrigorik

這個問題真的是你想如何實時得到?如果你想要速度,那麼XMPP是最好的選擇。(500毫秒)而PuSH取決於你的飼料以及它的傳遞方式。請記住,PuSH在內容到達用戶之前共有4個網絡跳數。

更大的麻煩是PuSH依靠HTTP Post。即使您最終設計了基於PuSH的聊天應用程序,並在稍後的階段進行了說明,但您希望將其提供給其他設備或甚至作爲桌面應用程序,您將不得不使用XMPP中繼相同的內容。另一個你會失去的地方是,你的聊天應用程序用戶很難從他們選擇的其他IM中登錄。

1

如果您不需要通過XMPP進行聯合身份驗證,但希望快速實現原型和快速部署以及開箱即用的可擴展性,請參閱Lift web框架的示例chat server in one page of code