Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/04/2014, 01:55
teleconocimiento
 
Fecha de Ingreso: febrero-2014
Mensajes: 30
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Nodejs se vuelve loco

Ok, este es mi proxy:

Código Javascript:
Ver original
  1. function consultar_titulo(titulo_consulta, callback) {
  2.  
  3.     var socket = io.connect('http://localhost:8080');
  4.  
  5.        socket.emit('consultar_titulo', {
  6.         "titulo_consulta": titulo_consulta
  7.     });
  8.  
  9.     socket.on('respuesta_consultar_titulo', function (data) {
  10.  
  11.         callback(data.respuesta_emit);
  12.  
  13.     });


Este es mi servidor:

Código Javascript:
Ver original
  1. var app = require('http').createServer(handler);
  2. var io = require('socket.io').listen(app);
  3.  
  4. var consultas_bd = require('../logica_negocio/consultas_bd');
  5.  
  6.  
  7. app.listen(8080);
  8.  
  9. function handler (req, res) {
  10.     console.log (" peticion recibida en servidor web: " + req.url);
  11.     var nombre = req.url;
  12.     if (req.url == "/") {
  13.         nombre = "/index.html";
  14.     }
  15.     fs.readFile(__dirname + nombre, function (err, data) {
  16.         if (err) {
  17.             res.writeHead(500);
  18.             return res.end('error al cargar: ' + req.url);
  19.         }
  20. //  res.setHeader("Content-Type","img/jpeg"); //MIME TYPE      
  21.         res.writeHead(200);
  22.         res.end(data);
  23.     });
  24. }//handler
  25.  
  26.  
  27. io.sockets.on('connection', function (socket){
  28.  
  29.         socket.on('consultar_titulo', function(data){
  30.  
  31.             console.log("Servidor(): Conexion (consultar_persona) Recibida.");
  32.  
  33.             consultas_bd.consultar_titulo(data.titulo_consulta, function(respuesta){
  34.  
  35.             socket.emit('respuesta_consultar_titulo', {"respuesta_emit": respuesta});  
  36.  
  37.  
  38.             });//consultar_titulo
  39.  
  40.         });//socket.on
  41.  
  42.     });//io.socket.on


Esta es mi "logica del negocio":

Código Javascript:
Ver original
  1. exports.consultar_titulo = function(titulo_consulta, respuesta_titulo) {
  2.  
  3.     var elementos = new Array();
  4.  
  5.     MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
  6.  
  7.         if (err)
  8.             throw err;
  9.  
  10.         var query = {
  11.             "titulo" : titulo_consulta
  12.         }
  13.  
  14.         var coleccion = db.collection('videos');
  15.  
  16.         var cursor = coleccion.find(query);
  17.  
  18.         cursor.each(function(err, item) {
  19.             if (item != null) {
  20.  
  21.                 elementos.push(item);
  22.  
  23.             } else {
  24.                 db.close();
  25.                 respuesta_titulo(elementos);
  26.             }
  27.         });//cursor
  28.  
  29.     });//connect
  30.  
  31.  
  32. }// consultar_titulo

Lo unico que podria limpiar es la variable elementos, pero al ser local se supone que esta limpia cada vez que se entra en el metodo.

Saludos