2010-02-24 125 views
0

我想讓網站上的一位用戶可以在我的Django網站上與另一位用戶聊天。我希望被請求者得到一個實時框,並說:「你想聊天嗎?」Django聊天請求的客戶端輪詢(反向AJAX)?

如何以下客戶端輪詢方法的聲音:

上users2暱稱USER1點擊,生成一個POST請求一些/消息/請求,在數據庫中創建類型CHAT_REQUEST的消息。同時,user2的瀏覽器中的一段Javascript代碼重複查詢服務器的消息更新。當它收到類型爲CHAT_REQUEST的消息時,它會打開一個彈出窗口...

此方法的問題似乎是數據庫訪問。

如果客戶端每10秒輪詢一次,並有100個用戶保持打開瀏覽器窗口,那麼每秒鐘有10個數據庫請求。

將這些消息不存儲在數據庫中,而是存儲在Django的RAM或會話信息中會更好嗎?或者將這個數據庫表用PostgreSQL緩存在RAM中,並且檢索速度很快?

+1

想一想爲此使用消息隊列。 – 2010-02-24 21:25:47

回答

2

如上所述,數據庫表會爲您的服務器加載負載,但如果您想要因任何原因保留這些請求的記錄可能會有用。

使用像memcached或AMQP服務器可能會給你更好的性能。如果你喜歡,你甚至可以使用更高性能的重要價值商店,如東京內閣/東京暴君。

0

如果您擔心服務器性能和帶寬使用情況,我建議您尋找「COMET like」通信而不是「AJAX like」。

順便說一句,REDIS看起來非常適合處理那種內存數據結構。