2011-04-02 65 views
6

我正在建立一個自助餐廳管理系統,其中有兩種類型的用戶;定製&櫃檯業主。通過數據庫更改向用戶發送通知

對於食堂提供的每道菜,都有一個與之相關的獨特dish.id。

到現在爲止,我有圓頂這樣的東西像學生髮送一個POST請求與盤,ID和計數器號碼更新「訂單表」(其中PK爲ID)。當盤子準備好後,櫃檯業主按「Prepeared」按鈕。

在這一點上,我想它的位次次到什麼準備得到通知客戶「您的訂單準備工作正在進行中。」

應該怎麼辦呢? 一種方法是簡單地製作一個視圖,其參數爲customer.id &狀態,並用True或Flase答覆。我可以簡單地輪詢URL並提供通知,如果我收到真的。

但是,我覺得投票是不是一種更好的方法一樣,還會有這麼多客戶登錄和每次都會查詢到沒有acceptible服務器。 有沒有更好的方法?

+0

輪詢(1個HTTP請求)vs完整頁面回發(10+?)對我來說看起來不錯。 Facebook做到了。你能想象它有多少用戶? – 2011-04-02 07:17:17

回答

2

這真的取決於你真正需要的。

如果通知可以發送給用戶活動的一部分,只需添加一條用戶消息,並且只要用戶在頁面上執行操作就會顯示該消息。 django.contrib.messages加上你的主html模板中的幾行就可以做到。

但是,如果您希望通知是互動的 - 你可以使用few PUSH options

有趣的環節之一:

從服務器端,有幾個選項可用,最簡單的是Green Unicorn。使用它可以讓您只有幾個流程打開和管理幾千個連接。

-1

由於我們無法通過http推送數據,因此我認爲投票是唯一的選擇。

你行你輪詢Ajax請求,它可以用來更新一些其他屬性(如果有的話),以及使它更具有互動:)

+0

有一個選項來推動互聯網。看看stacoferflow代碼本身...問題怎麼做:) – Jerzyk 2011-04-02 06:38:19

+0

我正在討論從web服務器推送數據到客戶端(瀏覽器)而不是其他方式。 – Myth 2011-04-02 07:02:16

+0

http://en.wikipedia.org/wiki/Push_technology – Jerzyk 2011-04-02 07:09:53

0

「推」的不重複投票的最簡單方法將是「long polling」,其中客戶端開始請求並在可用時立即獲得答案。無論如何,你必須使用一個擴展性好的服務器,但是它不會一直受到打擊。

有更好但更復雜的服務器推送方式,看看我上面鏈接的文章。

1

我不要;知道如果妳corectly理解,但我認爲你應該使用WebSockets

http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/ 
0

有兩種可能的方法......

  1. 重寫你的相關車型admin.py的保存方法,如it described in here

  2. 可以使用信號as it described in here

使用admin.save_model更容易,滿足您的需求。由於您有table_id,因此您可以將該表的訂單狀態設置爲「準備」。