2009-01-13 52 views
5

我想在使用AJAX的rails中實現可伸縮的聊天室。我從研究中得知,唯一的可擴展性發生在服務器端推送。服務器端推入導軌

我的兩個問題是:

1)在一個合理有效聊天服務器,在什麼時候投票變得望而卻步? 2)我真的不想使用劍聖。我不太瞭解彗星的工作原理。我想我想知道如果使用Javascript(創建客戶端服務器/輪詢器)和另一種語言(爲防火牆後面的客戶端提供高效的輪詢以及集成到CGI中)構建這將會非常困難。 和3)(是的,在2中),我是否會以正確的方式去做?

我希望最簡單的答案就是量化「是的,你把5行的Javascript到客戶端和20日線的紅寶石成一個CGI腳本,收工」。

回答

1

如果它是很容易做到的人就不會建這些技術。恕我直言,我認爲民意調查總是會成爲一種拙劣的方式來做到這一點。這就是說....

我不知道爲什麼劍聖關卡傢伙建立了這個網站64Squares與它的工作,爲的偉大工程。

我知道其他網站如WeeWar使用輪詢方法,他們有向上或400請求最小。所以我認爲在縮放成爲問題之前需要一段時間。

好運

乾杯

1

是的,你把5行的Javascript到客戶端和20日線的紅寶石成一個CGI腳本,收工

+0

我知道,在這一點上,幽默的答案並不值得讚賞和讚賞,但我無法抗拒。 – allesklar 2009-01-13 20:42:03

+0

我會笑,只是我一直在祈禱這個整個下午的答案。我正在幫助一個朋友的小企業,由於* I *無法在我的某個瀏覽器上運行Flash,所以我希望儘可能避免依賴技術。 – user54650 2009-01-13 20:53:02

+0

對不起。我做出這種俏皮話的一個重要原因是我沒有任何有用的提示。祝你好運。 – allesklar 2009-01-13 21:14:09

0

COMET的工作原理是保持打開服務器在Javascript中的連接(也有很多例子就如何獲得COMET網站上的這個異步數據)。服務器本質上是寫出數據並刷新數據,這可以通過一個緊密循環中的Mutex完成。你也可能需要一個排序的消息隊列。

從長遠來看,瞭解BOSH可能會更好。這是COMET的自然發展。

雖然劍聖有一個學習曲線(或者它可能不是真的),但學習如何做COMET是一個陡峭的。即使只是異步推送也很困難。不僅如此,而且你還需要考慮如何使其良好擴展。我從來沒有使用過Juggernaut,但是就ROR插件而言,我認爲它是微不足道的。如果他們想出如何讓它更好地擴展,那麼免費的性能會更快。

輪詢是技術上應該制定出簡單另一個選項,但是,我熱愛不使用輪詢,因爲它可以殺死你的服務器 - 所以我就在這裏,因爲我覺得投票是懶就不細說了路線。

0

篝火怎麼樣?它每5秒輪詢一次服務器。像夢一樣工作。

2

我正在嘗試做同樣的權利。 Juggernaut運行良好,但不適用於Rails 3,如果這不是要求,那麼我建議使用它,因爲它很容易進行聊天。 我的項目使用Rails 3,每3秒輪詢一次服務器(Campfire也是3次)。我正在使用Rails Metal來使投票速度非常快。如果你想使用Juggernaut,那麼很棒,2行客戶端js,以及1或2個服務器端。否則,開始工作吧!