Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2013, 20:40
joshua1983
 
Fecha de Ingreso: julio-2009
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 0
Información SocketIO auto emit

Hola a todos,

Tengo el siguiente proyecto:

Un cliente Web que se conecta con PonyExpress (Express + SocketIO + Node.js) a un servidor Node.js detras de un servidor nginx.

Como backend tengo el nginx redireccionando las peticiones /node al server de Node.js y las peticiones /ecg al servidor Django.

Logre realizar la conexión con SocketsIO a traves de PonyExpress de una de mis colecciones, y logro que se actualicen en todos los navegadores abiertos al momento de modificarlas en uno de ellos.

El problema esta en que necesito que se lanze el evento emit de socketIO cuando hay algún cambio en una tabla determinada, asi que uso request.js en Node.js dentro de una función setInterval para estar continuamente observando la base de datos por algun cambio. Esto funciona pero cuando lanza el emit con el update a los navegadores, estos dicen que los items necesitan ID y el id va en el JSON entregado por el emit; asi que no se que pueda estar faltando.

setInterval en el servidor Node.js


Código:
setInterval(function(){
    if(Math.random() > 0.3){

		request({
					url:'http://'+IP_DJANGO+':'+PUERTO_DJANGO+'/ecg/notas/',
					json: true
				}, 
					function (error, response, body) {
					if (!error && response.statusCode == 200) {
							//res2.send(body );
							console.log('notas::update', body);
							io.sockets.emit('notas::update', body);
						}
					});
    }
},5000);
Cargue de la coleccion y conexion con socketsIO


Código:
window.collections.notas = new Ecg.Collections.NotaCollection();

	window.ponyExpress = new PonyExpress({
		io: window.location.origin+':8191'
	});

	window.ponyExpress.bind('connect', function(){
		window.plugs.lectura = new PonyExpress.BackbonePlug({
			collection: window.collections.lectura
		});
		window.plugs.nota = new PonyExpress.BackbonePlug({
			collection: window.collections.notas
		});
	});

Última edición por joshua1983; 05/11/2013 a las 07:24