2011-04-02 9 views
6

Estoy construyendo un sistema de gestión de cafetería en el que hay dos tipos de usuarios: propietarios de mostradores & personalizados.Envío de notificación al usuario sobre cambio de base de datos

Para cada plato ofrecido en la cafetería, hay un plato único asociado.

Hasta ahora, tengo algo como que el estudiante envía una solicitud POST con plato, número de identificación y contador a una URL que actualiza la "tabla de pedidos" (que tiene PK como identificación). Cuando el plato está preparado, el contador propietario pulsa el botón "prepeared".

en este punto, quiero que el cliente cuyo fin está al lado de lo que está preparado para ser notificado de que "Su preparación de pedidos está en curso."

¿Cómo debería hacerlo? Una forma es simplemente hacer una vista que tenga su argumento como customer.id & y responde con True o Flase. Puedo simplemente sondear la URL y proporcionar la notificación si recuerdo ve Verdadero.

Pero, siento que las encuestas no son un mejor enfoque ya que habrá tantos clientes conectados y cada uno sondeará al servidor que no es aceptable. ¿Alguna mejor manera?

+0

El sondeo (1 solicitud HTTP) frente a la publicación de la página completa de vuelta (10+?) Se ve bastante bien para mí. Facebook lo hace ¿Te imaginas cuántos usuarios tiene? –

Respuesta

2

Realmente depende de lo que realmente necesita.

Si la notificación se puede enviar como parte de la actividad del usuario, simplemente agregue un mensaje de usuario y se mostrará cada vez que el usuario realice una acción en la página. django.contrib.messages y algunas líneas en su plantilla html principal lo harán.

Pero si quieres que la notificación interactiva - se puede utilizar uno de los few PUSH options

Enlaces de Interés:

Desde el lado de los servidores, hay pocas opciones disponibles, la más simple es Green Unicorn. Su uso le permitirá tener pocas miles de conexiones abiertas y administradas por solo unos pocos procesos.

-1

Como no podemos enviar datos a través de http, creo que la única opción que queda es el sondeo.

Puede que una petición Ajax para sondear, que se puede utilizar para actualizar algunas otras estadísticas (si lo hay), así para que sea más interactiva :)

+0

hay una opción para presionar a través de Internet. Mira el código stacoferflow en sí ... pregunta cómo hacerlo :) – Jerzyk

+0

Estoy hablando de empujar los datos del servidor web al cliente (navegador) y no a la inversa. – Myth

+0

http://en.wikipedia.org/wiki/Push_technology – Jerzyk

0

La forma más sencilla de un "empuje" sin recurrir sondeo sería "long polling", donde el cliente inicia una solicitud y recibe la respuesta tan pronto como esté disponible. Tienes que usar un servidor de escalamiento de todos modos pero no se golpea, al menos se martilla todo el tiempo.

Hay formas mejores pero más complicadas para los empujes del servidor, eche un vistazo al artículo que he vinculado anteriormente.

1

Me Don; no sé si u entender corectly, pero creo que se debe utilizar websockets

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

Hay dos formas posibles ...

  1. anular su modelos relacionados admin.py ahorro métodos como it described in here

  2. Puede utilizar las señales as it described in here

Uso admin.save_model es más fácil y se adapte a sus necesidades. Como tiene table_id, puede configurar el estado de orden de las tablas como "preparar".

Cuestiones relacionadas