2011-01-23 8 views
5

No estoy buscando a alguien que codifique la respuesta, pero me preguntaba si alguien podría ofrecer una visión general de cómo usar Django con node.js para obtener actualizaciones instantáneas impulsadas por eventos.Utilice node.js para las actualizaciones basadas en eventos en Django?

Tengo un "feed de noticias", y me gustaría que ese feed se actualice cuando entren nuevos elementos. La idea general que tengo es simplemente abrir una conexión al servidor de nodos a través de javascript, tener el el servidor de nodos "duerme" hasta que ingrese un nuevo elemento, en cuyo punto devuelve los datos y el lado de Django inicia otra conexión.

Mi confusión viene cuando se trata realmente de escribir el código node.js: la documentación muestra mucha información, pero no cómo usar esa información. Agradecería que alguien me indicara dónde buscar esto. ¿Utilizo algo como un EventEmitter? ¿Cómo puedo tener un script del lado de Django para que el servidor del nodo escuche únicamente los eventos relacionados con un usuario específico?

¡Gracias de antemano!

Respuesta

2

Si no se siente cómodo al escribir el código node.js, debe echar un vistazo a los servidores basados ​​en Python que se compilan específicamente para admitir solicitudes HTTP de larga ejecución.

Tornado es uno de ellos y puede ejecutar Django dentro de él (por ejemplo, http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/). Su uso de CPU/memoria puede no ser tan estelar como node.js, ¡pero definitivamente vale la pena verlo!

7

No importa, creo que lo descubrí. Creé mi propio emisor y lo hice escuchar mis propios eventos.

var myemitter = new events.EventEmitter(); 

Y cuando una solicitud de Django entró,

myemitter.addListener('action'+userid,function(data){ 
    //do something with data 
} 

Dicha solicitud sería a través de una llamada a través de JavaScript $.ajax() que haría esencialmente larga encuesta y esperar hasta que algo sucedió. Cuando sucedía algo en el servidor, es decir, el usuario hacía algo, el servidor publicaba en el nodo. La solicitud haría que el evento que se emite:

myemitter.emit('action'+userid,data); 

... lo que hace que la función de devolución de llamada de la segunda pieza de código que se llamará. Luego encuentra el objeto de respuesta asociado con esa solicitud, devuelve información y es analizada por el script de Django.

Espero que esto ayude a alguien, pensó que simplemente publicaría mi respuesta.

Cuestiones relacionadas