2013-08-20 74 views
1

我的問題是關於Django支持的網站用戶之間的實時協作。django實時協作網站

在實踐中我需要知道的是,如果有可能實現這樣的系統: 1)認爲,使用本網站的所有用戶都是用戶1,用戶2,...用戶N 2)每次用戶之一做一些有趣的事情,通知服務器和其他用戶,以便更新 應用程序狀態和瀏覽器ui 3)前一點可以擴展到不僅覆蓋用戶觸發的事件,還覆蓋其他更一般的事件,如超時或「每5分鐘「或任何你能想象的。

我知道瀏覽器到服務器和服務器到瀏覽器的通信可以通過ajax(或類似web-sockets或SSE的更新的東西)來完成,但是對我來說晦澀的部分是如何通知用戶何時發生某些事件發生。 想到的唯一(壞)想法是將應用程序數據存儲到數據庫,並在用戶執行某些操作時進行更新,同時讓所有用戶從數據庫中輪詢應用程序狀態。不過,我想知道是否有避免數據庫和查詢系統的使用 的方式,換句話說是這樣的:

當事件E被觸發=>發送到所有瀏覽器中的「e觸發」

在此先感謝

我會盡力更好地解釋我的問題:我想知道如何發送一個響應用戶「弗蘭克」時,另一個用戶「約翰」做些什麼。問題不在於服務器如何向瀏覽器發送內容,而是如何將john的活動(即點擊按鈕,更改頁面,填寫表單)鏈接到Frank的用戶界面而不使用數據庫。例如,想想一個簡單的聊天頁面,當用戶輸入一些東西時,輸入的文本必須推送給所有其他用戶:在這種情況下,我不知道如何將動作「John typed something」與動作「send typed text到弗蘭克的瀏覽器「。 memcache解決方案聽起來不錯,但我想知道是否有其他類似pub-sub或事件系統可用於鏈接不同用戶的連接。

+0

也許'Django'和'Socket.io'? –

+0

不是用於node.js的Socket.io?我更喜歡python解決方案,但可以採取node.js作爲最後的手段 – dacanalr

+0

有'django-scoketio' –

回答

0

實現緩存(即memcache)以避免在Ajax調用檢查更改時觸及數據庫。如果你想看看,看看key-based cache expiration來處理緩存失效。

+0

確實的緩存可以幫助不浪費數據庫,但不會幫助避免查詢系統... – dacanalr

+0

長輪詢本身並不壞。根據流星傢伙的說法,它比WebSockets更高性能。 – raphonic