Foros del Web » Programando para Internet » Node.js »

Asincronía en proxy

Estas en el tema de Asincronía en proxy en el foro de Node.js en Foros del Web. Hola. Estoy implementando una especie de proxy entre dos servidores llamados A y B respectivamente. El proxy lo llamare P. Por un lado el servidor ...
  #1 (permalink)  
Antiguo 18/10/2015, 16:09
 
Fecha de Ingreso: noviembre-2009
Mensajes: 98
Antigüedad: 15 años, 1 mes
Puntos: 2
Asincronía en proxy

Hola. Estoy implementando una especie de proxy entre dos servidores llamados A y B respectivamente. El proxy lo llamare P.
Por un lado el servidor A importa funciones del proxy P (mediante require) y lo utiliza para intercambiar información con B. Aquí el codigo en cuestion:

Servidor A
Código:
....
...
var p = require('./p.js');

...
...
console.log(p.getMessages());
Por otro lado, aqui el codigo del proxy P que contacta con el servidor B para conseguir una lista de mensajes:

Código:
var net = require('net');

var HOST = '127.0.0.1';
var PORT = 10100;

var client = new net.Socket();

exports.getMessages = function () {
	client.write('getMessages);

        client.on('data', function(data) {
	console.log("Received: " + data);
	        return data;
        });
}
......
El problema, como podreis haber podido deducir, es que cuando A realiza el console.log, P todavía no ha obtenido el valor "data" de B por lo que se muestra vacio.
He estado buscando información y no se si deberia usar promesas para solucionar esto.
Podríais ponerme un ejemplo de solución a este problema?

Saludos y gracias de antemano.
  #2 (permalink)  
Antiguo 19/10/2015, 11:40
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Asincronía en proxy

Puedes usar promesas o callbacks. Por ejemplo:

Con callbacks:
Código Javascript:
Ver original
  1. exports.getMessages = function (cb) {
  2.     client.write('getMessages');
  3.  
  4.         client.on('data', cb);
  5. };
  6.  
  7. ////////
  8.  
  9. p.getMessages(function(data){
  10.     console.log("Received: " + data);
  11. });

Con promesas:

Código Javascript:
Ver original
  1. exports.getMessages = function (cb) {
  2.         return new Promise(function(resolve) {
  3.         client.write('getMessages');
  4.  
  5.             client.on('data', resolve);
  6.        });
  7. };
  8.  
  9. ////////
  10.  
  11. p
  12.   .getMessages()
  13.   .then(function(data) {
  14.      console.log("Received: " + data);
  15.   });


Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 19/10/2015, 15:01
 
Fecha de Ingreso: noviembre-2009
Mensajes: 98
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Asincronía en proxy

Hola,
Muchas gracias por tu respuesta. Me ha sido de gran ayuda.

Ahora bien, con el console.log("Received: " + data); me muestra por lo que recibe, pero en cambio, si hago por ejemplo

Código:
sock.emit ('sending data', data);
parece que no envia nada. Sabrias decirme por que?

Soy nuevo en la programacion de servidor asincrona y me esta costanto un poco el tema de los callbacks.
Gracias por tu ayuda.

Saludos
  #4 (permalink)  
Antiguo 19/10/2015, 17:10
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Asincronía en proxy

Habría que ver más código para no adivinar.

Saludos
__________________
Grupo Telegram Docker en Español

Etiquetas: proxy
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:02.