我目前正在研究構建一個超過10k個用戶在線連接的聊天系統。我遇到了一些技術和方法,比如jabber(XMPP),websockets,長時間輪詢,推送。就目前而言,考慮到用戶的數量,長時間輪詢可能無法工作。我知道有很多方法可以做到這一點。我也知道Facebook和Google聊天系統是在XMPP上開發的。開發聊天/實時網絡應用程序
如果有人能指出我正確的方向,我會很感激。我相信所有這些方法和技術都取決於項目的規模。我絕對需要性能和可擴展性。
我目前正在研究構建一個超過10k個用戶在線連接的聊天系統。我遇到了一些技術和方法,比如jabber(XMPP),websockets,長時間輪詢,推送。就目前而言,考慮到用戶的數量,長時間輪詢可能無法工作。我知道有很多方法可以做到這一點。我也知道Facebook和Google聊天系統是在XMPP上開發的。開發聊天/實時網絡應用程序
如果有人能指出我正確的方向,我會很感激。我相信所有這些方法和技術都取決於項目的規模。我絕對需要性能和可擴展性。
我已經使用Socket.io連同NodeJS這樣的聊天應用程序。它在適度的服務器上擴展到超過10K個併發用戶,並且有很大的發展空間。
這取決於你的侷限性。
做出決定時考慮以上所有因素。
就我個人而言,我發現XMPP是相當充足的,但對我的目的有點臃腫。因人而異。
感謝您的回覆Lior! – paxtor
感謝您的回覆Lior!在進行我的研究時,我遇到了Socket.io和NodeJS。在當前狀態下:正在實施的語言是PHP,目標平臺是瀏覽器,服務器很可能是Windows支持的,而且它是一個新的基礎架構。根據我的發現,爲這種類型的項目選擇正確的技術至關重要。之前我只用ajax做過這樣的小事。但是,我知道在這種情況下它不會起作用。推送服務器將是選擇,毫無疑問。基於這個事實,你還推薦Socket.io和NodeJS嗎? – paxtor
@Charlie:我之前沒有在Windows服務器上嘗試過nodeJS,所以我實在無法對此進行評論。關於你的目標是瀏覽器,在我看來,像NodeJS + Socket.io應該可以正常工作。如果你真的需要擴展,我真的不會嘗試任何與PHP相關的推送,因爲PHP不適合這種架構。 –
你正在比較一個水果籃和三個不同品種的桔子。
XMPP是您提到的實際上旨在支持聊天系統(其中許多存在)的唯一協議。其他是簡單的異步消息協議/技術。 XMPP已通過BOSH支持基於http的聊天。毫無疑問,它還將在規範定稿時支持WebSockets。實際上這個已經寫了draft,但是在這一點上它似乎是使用草稿的草稿,所以可能會有很少的(如果有的話)實現。
使用XMPP將允許您建立一個經過驗證的技術來實現聊天系統,並允許您選擇要在「底層」下使用的傳輸方式。你實際上並沒有說你是否需要一個基於http的傳輸,但是對於XMPP,你可以使用基於tcp套接字的傳輸或基於http的傳輸(BOSH),並知道它將來也會支持WebSocket。
另一個好處是當然這是一個廣泛使用的標準,它允許在幾乎所有流行的(而不是流行的)語言和平臺中重複使用existing clients, servers and libraries。
可伸縮性與您引用的數字無關,因爲大多數(可能全部)現有的xmpp服務器將處理那麼多用戶。
你可能想看看服務器端來解決C10K問題。一種方法是nginx與[http push模塊](http:// pushmodule。slact.net/) – ronalchn
謝謝Ronalchn!這就是我正在做的事情。但是有了所有的選擇,選擇最合適的選擇有點困難。當我選擇一個php框架時,這是同樣的過程。那裏有很多,但是它們具有可擴展性等限制。 – paxtor
非常接近的副本http://stackoverflow.com/questions/11131760/developing-a-mobile-chat-room-backend-use-xmpp-or-websocket/11142357#11142357 – Robin