2011-04-02 69 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,因此您可以将该表的订单状态设置为“准备”。